将硬编码数据转换为动态foreach php


converting hardcode data into dynamic foreach php

我有一个想要转换的硬编码数据,我遇到的问题是多维数组,导致我在这里失败的是硬编码的:

$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 "&nbsp;&nbsp;&nbsp;&nbsp;".$dataid."<br>";
    }
}