我有一个像这样的 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
即我想将疾病数组中的值与药物的值进行匹配。 请帮助我。
为什么不使用数组中的键? 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'];
}
数组的键指向它的值。 所以你的键是 DISEASE 和 DRUG,每个键的键分别为 0 和 1。所以 - 我们匹配的是键而不是值。
打印数组的方法有很多种。 我很难假设未来打印这些值的最灵活的方法,但这是一种方法:
foreach ($items['DISEASE'] as $id => $disease)
{
echo 'For Disease ' . $disease . ', ' . $items['DRUG'][$id] . ' is used'."\n";
}
关键 $id 用于匹配疾病和药物子阵列。
假设两个数组具有相同的长度,你可以这样做:
for ($i=0; $i < sizeof($yourarray['DISEASE']); ++$i) {
echo 'For Disease ', $yourarray['DISEASE'][$i], ', ';
echo $yourarray['DRUG'][$i], ' is used';
}
那个
[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";
}
这里有一个技巧:你可能会明白并可以解决你的问题
$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>";
}