2016-07-24 75 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