早上好,对于库存清单,我想在我们出售汽车时自动更新。我有2x二维数组:
$array_purchase = array(
array(
'Name' => 'Mercedes',
'Purchase' => 10
),
array(
'Name' => 'BMW',
'Purchase' => 20
),
array(
'Name' => 'FIAT',
'Purchase' => 30
)
);
$array_sales = array(
array(
'Name' => 'Mercedes',
'Purchase' => 5
),
array(
'Name' => 'BMW',
'Purchase' => 10
)
);我试着用这个,但对我没用:
foreach($array_sales as $sName => $sSold){
if(isset($array_purchase[$sName])){
$array_purchase[$sName] - $sSold;
}
}结果应该是
梅赛德斯:5倍(10-5) 菲亚特:30倍(30-0) 宝马:10倍(20-10)
任何帮助都将不胜感激。
提前谢谢你的时间。
发布于 2016-11-18 08:39:20
如果您希望以这种方式对数据进行结构化,那么这就是您的解决方案:
代码:
foreach ( $array_sales as $keySales => $sales ) {
foreach ( $array_purchase as $keyPurchase => &$purchase ) {
if ( $purchase[ 'Name' ] == $sales[ 'Name' ] ) {
$purchase[ 'Purchase' ] -= $sales[ 'Purchase' ];
//break the 2nd foreach
break;
}
}
//unset the reference!
unset ( $purchase );
}
print_r( $array_purchase );结果:
Array
(
[0] => Array
(
[Name] => Mecedes
[Purchase] => 5
)
[1] => Array
(
[Name] => BMW
[Purchase] => 10
)
[2] => Array
(
[Name] => FIAT
[Purchase] => 30
)
)你对php中的数组缺乏一点了解,在网络上有一些很好的例子,http://php.net/manual/en/language.types.array.php,只是google一些。
发布于 2016-11-18 08:30:18
foreach($array_purchase as $key => $value){
if(isset($array_sales[$key]['Purchase'])){
echo($array_purchase[$key]['Name']." ".($array_purchase[$key]['Purchase'] - $array_sales[$key]['Purchase']));
echo("<br />");
} else {
echo($array_purchase[$key]['Name']." ".$array_purchase[$key]['Purchase']);
echo("<br />");
}
};这段代码可以被优化很多,但是它会给你一个很好的想法,你应该如何循环数据。
发布于 2016-11-18 08:30:30
您可以将多维数组转换为一维数组,然后对购买数组执行简单的子串操作:
$array_purchase = transformToSingleDimension($array_purchase);
$array_sales = transformToSingleDimension($array_sales);
$result = arraySubstract($array_purchase, $array_sales);
var_dump($result);
function transformToSingleDimension($array)
{
return array_reduce($array, function ($carry, $item) {
$carry[$item['Name']] = $item['Purchase'];
return $carry;
}, array());
}
function arraySubstract($array1, $array2)
{
foreach ($array1 as $key => &$value) {
if (isset($array2[$key])) {
$value -= $array2[$key];
}
}
return $array1;
}其结果将是:
array(3) { ["Mecedes"]=> int(5) ["BMW"]=> int(10) ["FIAT"]=> int(30) }https://stackoverflow.com/questions/40672205
复制相似问题