设置多维数组的内部值

时间:2016-07-24 11:09:42

标签: php

我想要的是,如果我有array('B2WGUR0276 ','TMT Steel')并且一旦其最后一个值为真,那么对于('B2WGUR0276 ','TMT Steel')的所有相同组合,将其最后一个值设置为true。

$ for_quantity为内部数组中的第3个元素设置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')
    );

1 个答案:

答案 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上看到它。