我不确定这里发生了什么。我试图通过在它的末尾附加一个元素来构建一个数组。我试图追加的元素是另一个数组。基础数组$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.
)
)
答案 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'];
}
}