由於我看不到你的陣列,我不知道哪個是整數,哪個是關聯的等等。
據我所見,沒有任何理由需要$ u_value的引用。它沒有造成任何傷害,但兩種方式都沒有區別。
更重要的是,任何時候你的第二個if條件將是真實的你達到就行了
$link_row['value'] = $args[ $u_value ];
也許你之前想使用
$link_row['value'] = isset($args[$u_value]) ? $args[ $u_value ] : "NOT PRESENT";
的你將有一個錯誤你提到的行似乎工作得很好。
我的代碼:
$args = array(100,200,300,400,500);
$unique_links = array (array( 'a' => array('attribute_name' => 1,'x' => 2, 'y' => 3, 'z' =>4),
'b' => array('attribute_name' => 3,'x' => 2, 'y' => 3, 'z' =>4),
'c' => array('attribute_name' => 0,'x' => 2, 'y' => 3, 'z' =>4),
'd' => array('attribute_name' => 7,'x' => 2, 'y' => 3, 'z' =>4),
'e' => array('attribute_name' => 1,'x' => 2, 'y' => 3, 'z' =>4)
));
echo_r($unique_links);
foreach ($unique_links as $link_id => &$link_attr)
{
foreach($link_attr as &$link_row)
{
foreach($link_row as $u_attr => $u_value)
{
echo "     $u_attr is $u_value <br />";
if ($u_attr == 'attribute_name')
{
// Assign a the attribs value to the array
$link_row['value'] = isset($args[$u_value]) ? $args[ $u_value ] : "NOT PRESENT";
// If one of the values for the unique key is blank, we can remove the entire
// set from being checked
if (!isset($args[ $u_value ]))
{
//echo "want to kill: $link_id <br />";
//unset($unique_links[$link_id]);
}
}
}
echo "<br />";
}
}
echo_r($unique_links);
我的輸出:
Array
(
[0] => Array
(
[a] => Array
(
[attribute_name] => 1
[x] => 2
[y] => 3
[z] => 4
)
[b] => Array
(
[attribute_name] => 3
[x] => 2
[y] => 3
[z] => 4
)
[c] => Array
(
[attribute_name] => 0
[x] => 2
[y] => 3
[z] => 4
)
[d] => Array
(
[attribute_name] => 7
[x] => 2
[y] => 3
[z] => 4
)
[e] => Array
(
[attribute_name] => 1
[x] => 2
[y] => 3
[z] => 4
)
)
)
attribute_name is 1
x is 2
y is 3
z is 4
value is 200
attribute_name is 3
x is 2
y is 3
z is 4
value is 400
attribute_name is 0
x is 2
y is 3
z is 4
value is 100
attribute_name is 7
x is 2
y is 3
z is 4
value is NOT PRESENT
attribute_name is 1
x is 2
y is 3
z is 4
value is 200
Array
(
[0] => Array
(
[a] => Array
(
[attribute_name] => 1
[x] => 2
[y] => 3
[z] => 4
[value] => 200
)
[b] => Array
(
[attribute_name] => 3
[x] => 2
[y] => 3
[z] => 4
[value] => 400
)
[c] => Array
(
[attribute_name] => 0
[x] => 2
[y] => 3
[z] => 4
[value] => 100
)
[d] => Array
(
[attribute_name] => 7
[x] => 2
[y] => 3
[z] => 4
[value] => NOT PRESENT
)
[e] => Array
(
[attribute_name] => 1
[x] => 2
[y] => 3
[z] => 4
[value] => 200
)
)
)
我註釋掉unnset,因爲它似乎全殺陣,不只是你想要的部分。我猜它是由於殺死你當前正在迭代的部分而造成的一些奇怪的行爲。
也許可以接受的答案還沒有給出? – Lee 2010-11-24 14:39:07