PHP 有条件地将嵌套数组作为函数参数传递

PHP conditionally pass nested arrays as function argument

提问人:george 提问时间:4/25/2022 最后编辑:marc_sgeorge 更新时间:4/30/2022 访问量:139

问:

我有两个嵌套的索引数组,我想使用函数用值填充它们。

但是在有条件的基础上:如果这样,则填充第一个数组;如果这样,请填充第二个数组。

这是我得到的:

工作,但重复

$sectionCounter = 0;

foreach($sections as $section) {
    if ($direction === 'up') {
        $array1[$sectionCounter][] = 1; 
        $array1[$sectionCounter][] = 25;
        // ...
    }   else {
        $array2[$sectionCounter][] = 1; 
        $array2[$sectionCounter][] = 25;
        // ...
    }
    $sectionCounter++;
}

首选(尚未工作)

function addElements($temp, $sectionCounter) {
        $temp[$sectionCounter][] = 1; 
        $temp[$sectionCounter][] = 25;
        // ...
}

foreach($sections as $section) {
    if ($direction === 'up') {
        addElements($array1, $sectionCounter);
    } else { 
        addElements($array2, $sectionCounter);
    }
    $sectionCounter++;
}
PHP 数组函数 条件语句 参数传递

评论

0赞 u_mulder 4/25/2022
问题是什么?旁注:您的函数不返回任何内容addElements
1赞 M. Eriksson 4/25/2022
要实际向生成的数组添加某些内容,您需要在函数末尾返回新值:,然后存储响应:。或者,您可以简单地通过引用传递数组。然后,您需要做的就是在参数前面添加一个:.return $temp;$array1 = addElements($array1, ....);&function addElements(&$temp, $sectionCounter)
0赞 mickmackusa 5/26/2022
我不确定之前是否声明过。如果您是第一次声明子数组,或者您可能要覆盖数据,这很重要。你能提供一个最小的可重复的例子吗?通过显示最少的数据样本并表达您确切期望的输出,我们可以自信地为您提供很好的指导。@george$array1$array2
0赞 mickmackusa 5/26/2022
@george 这能满足您的所有需求吗?3v4l.org/C0S58

答:

0赞 R4ncid 4/25/2022 #1

您可以尝试其他方法

$sectionCounter = 0;
$data = [
   'up' => $array1,
   'other' => $array2
];
foreach($sections as $section) {
    $dir = $direction === 'up'? 'up': 'other';
    
    $data[$dir][$sectionCounter][] = 1; 
    $data[$dir][$sectionCounter][] = 25;
        // ...
   
    $sectionCounter++;
}

$array1 = $data['up'];
$array2 = $data['other'];