我有一个关联数组:
$pair = array(
'S'=>'0',
'I'=>'50',
'P'=>'30'
);
从这对键和值中,我需要首先从键值对出现非零值,
从我的示例中,我期待键I
和值50
。
答案 0 :(得分:0)
做这样的事情:
function findNonZero($var){
// returns whether the input is non zero
return($var > 0);
}
$pair = array(
'S'=>'0',
'I'=>'50',
'P'=>'30'
);
$newPair = array_filter($pair, "findNonZero");
var_dump($newPair); //Contains array of non-zero values
答案 1 :(得分:0)
你可以用通常的foreach循环来做到这一点
$pair = array(
'S'=>'0',
'I'=>'50',
'P'=>'30'
);
foreach($pair as $k=>$v) {
if ($v) break;
}
echo "$k => $v"; // I => 50
答案 2 :(得分:0)
您可以使用php函数array_filter(),array_slice()或使用foreach循环。
<?php
// filter out empty values, and get first item
$value = array_slice(array_filter($pair), 0, 1);
// check not empty
if (!empty($value)) {
// get key
echo 'key => '.array_keys($value)[0].PHP_EOL;
// get value
echo 'value => '.array_values($value)[0];
}
<强>结果:强>
key => I
value => 50
或使用循环:
<?php
$value = [];
foreach ($pair as $k => $v) {
if (!empty($v)) {
$value[$k] = $v;
break;
}
}
if (!empty($value)) {
echo 'key => '.array_keys($value)[0].PHP_EOL;
echo 'value => '.array_values($value)[0];
}
<强>结果:强>
key => I
value => 50
或使用generator,
<?php
$getNoneEmpty = function() use ($pair) {
foreach ($pair as $key => $value) {
if (!empty($value)) {
yield [$key => $value];
}
}
};
// get first
$value = $getNoneEmpty()->current();
if (!empty($value)) {
echo 'key => '.array_keys($value)[0].PHP_EOL;
echo 'value => '.array_values($value)[0].PHP_EOL;
}
// or loop over all
foreach ($getNoneEmpty() as $value) {
echo 'key => '.array_keys($value)[0].PHP_EOL;
echo 'value => '.array_values($value)[0].PHP_EOL;
}
<强>结果:强>
key => I
value => 50
key => I
value => 50
key => P
value => 30
如果您不想要键/值,也可以采用不同的方式对猫进行皮肤处理。