将一个数组的值与另一个数组进行匹配

问题描述 投票:0回答:5

我有一个像这样的 php 数组输出

Array ( 
[DISEASE] => Array ( [0] => DM [1] => HT ) 
[DRUG] => Array ( [0] => INSULIN [1] => DIURETIC) 
) 

现在我想打印以下内容

For Disease DM, INSULIN is used
For Disease HT, DIURETIC is used

即我想将疾病数组中的值与药物的值进行匹配。 请帮助我。

php arrays
5个回答
4
投票

为什么不使用数组中的键? http://php.net/manual/en/language.types.array.php(参见示例一)

那么数组将如下所示:

$items = array(
    array('disease' => 'DM', 'drug' => 'INSULIN'),
    array('disease' => 'HT', 'drug' => 'DIURETIC'),
);

你可以这样称呼它:

foreach($items as $item)
{
    echo $item['disease'] . ' - ' .  $item['drug'];
}

2
投票

数组的键指向它的值。 所以你的键是 DISEASE 和 DRUG,每个键的键分别为 0 和 1。所以 - 我们匹配的是键而不是值。

打印数组的方法有很多种。 我很难假设未来打印这些值的最灵活的方法,但这是一种方法:

foreach ($items['DISEASE'] as $id => $disease)
{
   echo 'For Disease ' . $disease . ', ' . $items['DRUG'][$id] . ' is used'."\n";
}

关键 $id 用于匹配疾病和药物子阵列。


1
投票

假设两个数组具有相同的长度,你可以这样做:

for ($i=0; $i < sizeof($yourarray['DISEASE']); ++$i) {
    echo 'For Disease ', $yourarray['DISEASE'][$i], ', ';
    echo $yourarray['DRUG'][$i], ' is used';
}

0
投票

那个

[DISEASE] => Array ( [0] => DM [1] => HT ) 

包含您的钥匙。

那个

[DRUG] => Array ( [0] => INSULIN [1] => DIURETIC)

包含相应的值。

假设你的数组被命名为

$array
,你可以将两者结合起来:

$mapped = array_combine($array['DISEASE'], $array['DRUG']);

然后您可以通过密钥访问每种疾病的药物:

$mapped['DM']; # INSULIN

要打印全部,只需迭代即可

foreach($array['DISEASE'] as $disease)
{
    $drug = $mapped[$disease]
    echo "For Disease $disease, $drug is used.\n";
}

0
投票

这里有一个技巧:你可能会明白并可以解决你的问题

$an = array(
        'numbers'=>array(1,2,3,4,5),
        'alphabates'=>array('a','b','c','d','e')
    ); 

foreach($an['numbers'] as $key=>$value){
    echo $value." => ".$an['alphabates'][$key]."<br>";
}
© www.soinside.com 2019 - 2024. All rights reserved.