2015-04-06 2 views
0

Я создаю json из моего db, как показано ниже;Использование array_map с fetchAll (PDO :: FETCH_ASSOC)

$PdoObject -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$PdoStatement=$PdoObject->prepare($SqlQuery); 
$PdoStatement->execute(); 
$PdoResultToArray=$PdoStatement->fetchAll(PDO::FETCH_ASSOC); 

Я пытаюсь работать над значением возвращаемого массива db, как показано ниже, но возвращает ошибку.

$PdoResultToArrayNew=array_map("strtolower", $PdoResultToArray); 

Внимание: strtolower() ожидает параметр 1, чтобы быть строка, массив приведены в

+0

вашу функцию 'array_map (titleCase, $ PdoResultToArray); 'должно быть как' array_map ("titleCase", $ PdoResultToArray); ' –

+0

Можете ли вы' print_r ($ PdoResultToArray) '? –

ответ

1

Поскольку $PdoResultToArray это массив строк. Каждая строка представляет собой массив.

Вы должны цикл по каждой строке вручную:

foreach($PdoResultToArray as $row) { 
    $json_row = array_map("strtolower", $row); 
    /// do with it what you want 
} 

Построить новый массив строк:

$lowerRows = [] 

foreach($PdoResultToArray as $row) { 
    $lowerRows[] = array_map("strtolower", $row); 
} 
+0

Спасибо, но как я могу снова объединить массивы после FOREACH, как fetchAll (PDO :: FETCH_ASSOC)? – Kerberos

+0

Обновленный ответ. Просто создайте новый массив строк. –

+0

Спасибо, что он работает как шарм :) – Kerberos

Смежные вопросы