我有一个我想要转换的硬编码数据,我遇到的问题是多维数组,导致我在这里失败的是硬编码:
$query = array(
'No' => 'test123',
'list' => array(
0 => array(
'title' => 'MR'
),
1 => array(
'title' => 'MS'
),
2 => array(
'title' => 'MISS'
),
3 => array(
'title' => 'MISS'
),
),
);
我尝试从以下数据转换为动态php foreach:
foreach($datas as $data) {
$num = count($data);
$newdata = array();
for($i=0;$i<$num;$i++) {
$dataid = $data[$i]['target_id'];
$datainfo = dataget($dataid);
$title = strtoupper($datainfo->title);
$datalist[] = array(
'title' => $title,
);
}
}
$query = array (
'No' => $title,
'list' => $datalist
);
但它不起作用,当我提交超过1个数据时,它不起作用,但当它只有1个数据时它正在工作。
我是否正确地重构了代码?请有人澄清一下吗?谢谢
答案 0 :(得分:0)
您的foreach使用不正确。您正在混合数据和数据。
foreach($datas as $data)
应改为
foreach($data as $datas)
在循环内部,所有$ data数据都应该更改为$ datas。
我并没有真正明白你想要做的事情。但是使用以下代码,我能够打印整个数组的内容。
$irr = array(
'No' => 'test123',
'list' => array(
0 => array('title' => 'MR'),
1 => array('title' => 'MS'),
2 => array('title' => 'MISS'),
3 => array('title' => 'MISS')
),
'No2' => 'test2',
'listo' => array(
0 => array('title' => 'MR'),
1 => array('title' => 'MS'),
2 => array('title' => 'Mato')
)
);
echo "<br>";
foreach($irr as $key=>$data) {
$num = count($data);
if ($num == 1) {
echo $key . "=>" . $data."<br>";
continue;
}
echo $key . "=> <br>";
for($i = 0; $i < $num; $i++) {
$dataid = $data[$i]['title'];
echo " ".$dataid."<br>";
}
}