从数组中选择与php中另一个数组中的条件匹配的数据



我有2个数组,我想显示最后一个数组,因为$displayArray中的数组元素只能从$ firststarray

显示
$firstArray = Array
(
[0] => Array
    (
        [Dis_id] => Dl-Dis1
        [Dis_Desc] => Discount
        [Dis_Per] => 7.500
        [Dis_val] => 26.25
    )
[1] => Array
    (
        [Dis_id] => Dl-Dis2
        [Dis_Desc] => Discount
        [Dis_Per] => 2.500
        [Dis_val] => 8.13
    )
)
$displayArray = Array
(
[0] => Array
    (
        [0] => Dis_id
        [1] => Dis_val
    )
)

我希望最后的输出是

$resultArray = Array
(
[0] => Array
    (
        [Dis_id] => Dl-Dis1
        [Dis_val] => 26.25
    )
[1] => Array
    (
        [Dis_id] => Dl-Dis2
        [Dis_val] => 8.13
    )
)

$firstArray和$DisplayArray都是动态的,但是$DisplayArray应该是一个。

我不知道该怎么办,请给我一些建议

首先,如果$displayArray永远不会有多个数组,那么答案非常简单。从弹出内部数组开始,以获得您需要的实际键:

$displayArray = array_pop($displayArray);//get keys
$resultArray = array();//this is the output array
foreach ($firstArray as $data)
{
    $item = array();
    foreach ($displayArray as $key)
        $item[$key] = isset($data[$key]) ? $data[$key] : null;//make sure the key exists!
    $resultArray[] = $item;
}
var_dump($resultArray);

这就是你所需要的。
但是,如果$displayArray包含多于1个子数组,则需要额外的循环

$resultArray = array();
foreach ($displayArray as $k => $keys)
{
    $resultArray[$k] = array();//array for this particular sub-array
    foreach ($firstArray as $data)
    {
        $item = array();
        foreach ($keys as $key)
            $item[$key] = isset($data[$key]) ? $data[$key] : null;
        $resultArray[$k][] = $item;//add data-item
    }
}
var_dump($resultArray);

后一个版本可以处理如下的显示数组:

$displayArray = array(
    array(
        'Dis_id',
        'Dis_val'
    ),
    array(
        'Dis_id',
        'Dis_desc'
    )
);

它会产生一个$resultArray,看起来像这样:

array(
    array(
        array(
            'Dis_id'  => 'foo',
            'Dis_val' => 123
        )
    ),
    array(
        array(
            'Dis_id'   => 'foo',
            'Dis_desc' => 'foobar'
        )
    )
)
工作

相关内容

  • 没有找到相关文章

最新更新