2016-07-24 2 views
2

Я хочу, чтобы, если у меня есть array('B2WGUR0276 ','TMT Steel'), и как только его последнее значение истинно, установите его последнее значение равным true для всех тех же комбинаций ('B2WGUR0276 ','TMT Steel').Установить внутреннее значение для многомерного массива

$ for_quantity устанавливает истинным или ложным для 3-го элемента во внутреннем массиве

<?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

Учитывая массив $ б, вы можете использовать это:

$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

он устанавливает true для этой комбинации также массив ('B2WGUR0276', 'Jindal JSW') @trincot – Aryan

+0

Ах да, теперь я вижу, что вам нужна уникальная комбинация , Я обновлю ... – trincot

+0

, потому что он отличается от («B2WGUR0276», «TMT Steel»). @trincot – Aryan

Смежные вопросы