我的应用程序使用许多数组和许多SQL查询。我的问题在这段代码中:
我执行此查询:
$select = "SELECT name, surname FROM table"
$query = $connection->query($select);
$array = $query->fetchAll(PDO::FETCH_ASSOC);
然后,我将值传递给这样的数组:
$array_dump= array(
array(
array('name' => 'name'),
array('content' => $array['name'])
),
array(
array('name' => 'surname'),
array('content' => $array['surname'])
),
)
事实上,如果你没有设置error_reporting(),这可以正常工作。如果我打开,我会收到此错误:
注意:未定义的索引:第27行的C:\ AppServ \ www \ test.php中的姓氏
由于数组未设置,实际上会发生这种情况。换句话说,姓氏值为空。
我的麻烦:
我必须使用这种方法,但我不能使用这样的东西(得到错误):
array(
array('name' => 'name'),
array('content' => (isset($array['surname']) ? $array['surname'] : '')
)
我的问题
如你所见,这是一个错误,但是那个"注意"不应该出现(因为INDEX没有定义......)。有没有办法在默认情况下从查询设置所有数组键,即使值为NULL,例如" surname"领域?那将是最快的解决方案。我一直在寻找这个,但没有得到答案。
谢谢!
答案 0 :(得分:0)
您应该迭代结果并根据需要格式化它们。像这样:
$array = $query->fetchAll(PDO::FETCH_ASSOC);
$array_dump = array();
foreach ( $array as $person ) {
$tempArray = array();
array_push($tempArray, array(
'name' => 'name',
'content' => $person['name']
));
array_push($tempArray, array(
'name' => 'surname',
'content' => $person['surname']
));
array_push($array_dump, $tempArray);
}
答案 1 :(得分:0)
默认情况下,无法设置 ALL 可能的数组键。但是,您可以基于预定义的键集构建默认值数组,并将其与主数组合并。不知怎的,这样:
$a_keys = array('name', 'surname');
$a_defaults = array_combine($a_keys, array_fill(0, count($a_keys), 0));
$array = array_merge($a_defaults, $array);
...