我有一个想要转换的硬编码数据,我遇到的问题是多维数组,导致我在这里失败的是硬编码的:
$query = array(
'No' => 'test123',
'list' => array(
0 => array(
'title' => 'MR'
),
1 => array(
'title' => 'MS'
),
2 => array(
'title' => 'MISS'
),
3 => array(
'title' => 'MISS'
),
),
);
我尝试从以下数据转换为动态phpforeach:
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个数据时,它起作用了。
我是否正确地进行了代码重构?有人能澄清一下吗?
感谢
您的foreach使用不正确。你在混淆数据和数据。
foreach($datas as $data)
应该改为
foreach($data as $datas)
在循环中,$data的所有出现都应更改为$data。
我真的没有明白你想做什么。但是使用以下代码,我能够打印整个数组的内容。
$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>";
}
}