附加数组元素不填充数据

时间:2018-01-17 07:10:53

标签: php arrays

我不确定这里发生了什么。我试图通过在它的末尾附加一个元素来构建一个数组。我试图追加的元素是另一个数组。基础数组$array处于循环中,因此我希望看到cid附加的所有$array数据,但我得到的只是一个值,仅此而已。如果我可以回显属于cid的所有值,那么为什么我只得到一个值?

这就是代码的样子。我想将unlink与另一个cid数组作为值附加。

奇怪的是foo数组有效。我不明白为什么我无法获取cid数组,并将所有值附加到$array

foreach( $hash as $tmp ){
    $array[ $grpIdx ][ $tmp['iid'] ] = array(
      'file' => $pieces['filename']
    );

    if( $attr['Checked'] == 0 ) {
        $array[ $grpIdx ][ $tmp['iid'] ]['retain'] = $pieces['filename'];
    }else{
          // $foo[ $grpIdx ][ $tmp['iid'] ]['unlink'][ ] = $tmp['cid'];
        $array[ $grpIdx ][ $tmp['iid'] ]['unlink'][ ] = $tmp['cid'];
    }
}

完成后,数组应如下所示

Array(
    [file] => some value
    [retain] => another value
    [unlink] => array
    (
        [0] => 1111
        [1] => 2222
        ....
    )
)

编辑:

为了澄清,$array[ $grpIdx ][ $tmp['iid'] ]使用所有正确的值构建得很好。我遇到的问题是我试图追加的unlink元素。该元素附加到$array,但我只看到一个值而不是多个数组值。

Array(
    [file] => some value
    [retain] => another value
    [unlink] => array
    (
        [0] => 1111 <---- This is the issue. Only one value when there should me multiple values.
    )
)

2 个答案:

答案 0 :(得分:0)

由于还不完全清楚,我的建议是你在每次迭代时覆盖$array[ $grpIdx ][ $tmp['iid'] ]。你应该添加一张支票:

if (empty($array[ $grpIdx ][ $tmp['iid'] ])) {
    $array[ $grpIdx ][ $tmp['iid'] ] = array(
      'file' => $pieces['filename']
    );
}

在这种情况下,您将为每个$array[ $grpIdx ][ $tmp['iid'] ]仅为{strong> 创建$tmp['iid']

答案 1 :(得分:0)

您需要检查$array[ $grpIdx ][ $tmp['iid'] ]是否已存在

foreach( $hash as $tmp ){

    if (!isset($array[ $grpIdx ][ $tmp['iid'] ]) {
        $array[ $grpIdx ][ $tmp['iid'] ] = array(
          'file' => $pieces['filename']
        );
    }

    if( $attr['Checked'] == 0 ) {
        $array[ $grpIdx ][ $tmp['iid'] ]['retain'] = $pieces['filename'];
    }else{
        // $foo[ $grpIdx ][ $tmp['iid'] ]['unlink'][ ] = $tmp['cid'];
        $array[ $grpIdx ][ $tmp['iid'] ]['unlink'][ ] = $tmp['cid'];
    }
}