【问题标题】:Array foreach or use for loop数组 foreach 或使用 for 循环
【发布时间】:2020-12-10 05:56:15
【问题描述】:

我有数组...

Array
(
    [0] => Array
        (
            [id] => 1
            [number1] => 0
            [value] => 3
        )

    [1] => Array
        (
            [id] => 2
            [number1] => 0
            [value] => 3
     
        )

    [2] => Array
        (
            [id] => 3
            [number1] => 0
            [value] => 11
        )
    [3] => Array
        (
            [id] => 4
            [number1] => 1
            [value] => 10
        )
 [4] => Array
            (
                [id] => 5
                [number1] => 1
                [value] => 13
            )

当前我的代码...

$namearray=array();
foreach($myArray as $key => $value){
                if($value['number1']==0){
                        $namearray[0][]=$value['value'];
                }
               if($value['number1']==1){
                        $namearray[1][]=$value['value'];
                }
        }
print_r($namearray);

我的代码当前输出:

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 3
            [2] => 11
        )
    [1] => Array
        (
            [0] => 10
            [1] => 13
        )

)

如何使用循环替换 if $value['number1']==0$value['number1']==1 ? 我可能有更多number1 号码! 我尝试使用 for 循环但不起作用!它不会显示任何内容。

【问题讨论】:

  • 它不是很清楚所需的数组是什么样的,为什么一个3被添加到索引0而另一个3被添加到索引1?两者(id 为 1 和 2 的条目)对于 number1number2 具有相同的值

标签: php arrays foreach


【解决方案1】:

您可以使用number1 值来选择索引。

$namearray = [];
foreach ($myArray as $key => $value) {
    $index = $value['number1']; // get the index
    $namearray[$index][] = $value['value']; // use it
}
print_r($namearray);

例如:

$myArray = [
    ['id' => 1, 'number1' => 0, 'value' => 3],
    ['id' => 2, 'number1' => 0, 'value' => 3],
    ['id' => 3, 'number1' => 0, 'value' => 11],
    ['id' => 4, 'number1' => 1, 'value' => 10],
    ['id' => 5, 'number1' => 1, 'value' => 13],
];

$namearray = [];
foreach ($myArray as $key => $value) {
    $index = $value['number1'];
    $namearray[$index][] = $value['value'];
}
print_r($namearray);

输出:

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 3
            [2] => 11
        )

    [1] => Array
        (
            [0] => 10
            [1] => 13
        )

)

【讨论】:

  • 可以显示 ..Array ([0] => Array ([0] => 3,10 [1] => 3,13 [2] => 11,0))
  • 因为数组[1]的长度是2 数组[0]的长度是3组合在一起,在数组中填零?
  • 这在循环中不容易做到。但是,您可以在循环之后更新数组,因为您可以知道“number1”的最终数量。这可能是另一个问题。这个答案是否解决了您当前的问题?
猜你喜欢
  • 2018-01-14
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
  • 2015-05-08
  • 2013-07-18
  • 1970-01-01
相关资源
最近更新 更多