如何回应这个多维如下

时间:2015-12-29 23:48:06

标签: php arrays multidimensional-array

请帮我一个代码。我在它的数组52,55,54中有这个多维数组 - 数组52有2个数组显示重复的funcionario_id键,其他数组各有一个,因为输出没有重复的键。

注意:这个多维是动态的,这个例子显示了4个数组,但可以更多。

现在我需要显示pedido_data_emitir的值,尊重数组的分组如下

需要回显的数组:

$new_array = Array(
[52] => Array
    (
        [0] => stdClass Object
            (
                [pedido_id] => 54
                [cliente_id] => 5
                [funcionario_id] => 52
                [pedido_forma_de_pagto_id] => 2
                [pedido_data_emitir] => 2015-12-16 13:07:19
            )

        [1] => stdClass Object
            (
                [pedido_id] => 52
                [cliente_id] => 5
                [funcionario_id] => 52
                [pedido_forma_de_pagto_id] => 2
                [pedido_data_emitir] => 2015-12-16 13:07:32
            )

    )

[55] => Array
    (
        [0] => stdClass Object
            (
                [pedido_id] => 51
                [cliente_id] => 7
                [funcionario_id] => 55
                [pedido_forma_de_pagto_id] => 2
                [pedido_data_emitir] => 2015-12-16 13:07:28
            )

    )

[54] => Array
    (
        [0] => stdClass Object
            (
                [pedido_id] => 53
                [cliente_id] => 6
                [funcionario_id] => 54
                [pedido_forma_de_pagto_id] => 2
                [pedido_data_emitir] => 2015-12-16 13:07:36
            )

    )

)

我需要的是这样的回声:

array 52 =>pedido_data_emitir,pedido_data_emitir
<hr/>
array 54 =>pedido_data_emitir
<hr/>
array 55 =>pedido_data_emitir
<hr/>

with normal foreach its get wrong echo

array 52 =>pedido_data_emitir
<hr/>
array 52 =>pedido_data_emitir
<hr/>
array 54 =>pedido_data_emitir
<hr/>
array 55 =>pedido_data_emitir
<hr/>

4 个答案:

答案 0 :(得分:2)

您可以使用array_mapimplode这样做:

foreach($new_array as $key => $element) {
    echo "array $key => "
         . implode(", ", array_map(
                   function ($o) { return $o->pedido_data_emitir; }, $element))
         . "<hr/>";
}

输出:

array 52 => 2015-12-16 13:07:19, 2015-12-16 13:07:32
<hr/>
array 55 => 2015-12-16 13:07:28
<hr/>
array 54 => 2015-12-16 13:07:36
<hr/>

答案 1 :(得分:1)

你需要在外循环中做一个嵌套循环,即

foreach($new_array as $key => $values){

    // will output 'array 52 => '
    echo "array {$key} => ";

   // create var to hold the pedido_data_emitir string
   $pedido_data_emitir = "";

    foreach($values as $value){
        // add each pedido_data_emitir value to the string
        $pedido_data_emitir .= $value['pedido_data_emitir'].", ";
    }

    // remove the trailing ', '
    echo rtrim($pedido_data_emitir,", ");


    echo "<hr/>";
}

答案 2 :(得分:0)

我不知道我是否理解你。无论如何,使用嵌套的foreach

$tmp_array = array();

foreach($new_array as $index => $array) {
  foreach($array as $object) {
    array_push($tmp_array, $object->pedido_data_emitir);
  }
  $new_array[$index] = implode(', ', $tmp_array);
  $tmp_array = array();
}

之后,$new_array拥有您想要的内容

答案 3 :(得分:0)

Sean谢谢你,我刚刚添加了这段代码,将数组从stdClass更改为普通数组,并且工作正常。

$array_modi = json_decode(json_encode($new_array), true);