2016-07-24 114 views
2

我想要的是,如果我有array('B2WGUR0276 ','TMT Steel'),並且一旦它的最後一個值爲真,那麼將其最後的值設置爲對於('B2WGUR0276 ','TMT Steel')的所有相同組合都爲真。設置多維數組的內部值

$ for_quantity設置true或false在內部數組中的第三個元素

<?php 
    $b=array 
    (array('B2WGUR0276 ','TMT Steel','10','false'), 
    array('B2WGUR0276','TMT Steel','5','true'), 
    array('B2WGUR0276','Jindal JSW ','10','false'), 
    array('B2WGUR0276 ','TMT Steel','10','false') 
    ); 
    $f=array(array('B2WGUR0276 ','TMT Steel'),array('B2WGUR0276','Jindal JSW '),array('B2WGUR0276 ','TMT Steel')); 
    foreach($b as $key=>$keys) { 
     if($for_quantity=='true'&&in_array($f,$b)) { 
      $b[$key][3]='true'; 
     } 
    } 

?> 

輸出,更新數組$ B應該像

$b=array 
    (array('B2WGUR0276 ','TMT Steel','10','true'), 
    array('B2WGUR0276','TMT Steel','5','true'), 
    array('B2WGUR0276','Jindal JSW ','10','false'), 
    array('B2WGUR0276 ','TMT Steel','10','true') 
    ); 
+0

聽起來不錯。現在如何將最後一個值更新爲真,到目前爲止你所嘗試的是什麼? –

+0

我已經使用in_array然後foreach循環來設置$ b的值[$ key] [3] ='true'@Anant – Aryan

+0

把你的代碼放在這裏,我們會告訴你如何改正它 –

回答

2

鑑於陣列$ B,你可以用這個:

$match = array_flip(array_map(function ($row) { 
    return end($row) === 'true' ? $row[0] . "|" . $row[1] : ""; 
}, $b)); 
foreach ($b as &$row) { 
    $row[count($row)-1] = isset($match[$row[0] . "|" . $row[1]]) ? 'true' : 'false'; 
} 

之後此代碼$ b將如您所願。

看到它運行在eval.in

+0

它的這個組合也陣列(「B2WGUR0276」,「金達萊JSW」)@trincot – Aryan

+0

啊,是集真,我現在看到你所需要的獨特組合。我將更新... – trincot

+0

,因爲它與('B2WGUR0276','TMT Steel')不同。 @trincot – Aryan