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

时间:2015-12-14 11:47:07

标签: php arrays for-loop multidimensional-array foreach

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

$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个数据时它正在工作。

我是否正确地重构了代码?请有人澄清一下吗?

谢谢

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