如何解决在PHP中,如何分辨数组中特定值附近的值?
| 我有一个值数组。假设数组是这样的:[apple,banana,coconut,duku,emblica,fig,gooseBerry]
假设我知道一个特定的值“ fig”。如何知道之前和之后哪个值旁边?
解决方法
$index = array_search(\"fig\",$array);
$before = \"\";
$after = \"\";
if($index === false){
echo \"Not found\";
}else{
$before = $index > 0 ? $array[$index - 1] : \"\";
$after = ($index + 1) < count($array) ? $array[$index + 1] : \"\";
}
, 假设键是顺序的:
$key = array_search($fruit,\'fig\');
if ($key === FALSE) {
echo \'No figs in array\';
} else {
echo \"Before: \",$fruit[$key-1];
echo \"After: \",$fruit[$key+1];
}
, 你会用
$key = array_search($array);
$leftVal = $array[$key - 1];
$rightVal = $array[$key + 1];
array_search()函数返回数组中值的索引,然后仅递增/递减即可查找相邻的值。
, 公认的答案几乎是正确的,但是它不能很好地处理“缺失”元素。
您可以使用函数array_key_exists()来验证键是否存在,这也可以用作边界检查。
尝试这个:
<?php
function array_before_after($stext,$array) {
$index = array_search($stext,$array);
$before = \"\";
$after = \"\";
if($index === false){
echo \"Not found\";
}else{
$before = array_key_exists($index - 1,$array) ? $array[$index - 1] : \"\";
$after = array_key_exists($index + 1,$array) ? $array[$index + 1] : \"\";
}
return array($before,$after);
}
$my_array = array( 1 => \"apple\",2 => \"banana\",3 => \"coconut\",6 => \"fig\",7 => \"gooseberry\");
$my_stext = \"fig\";
$a1 = array_before_after($my_stext,$my_array);
echo \"\'$a1[0]\',\'$my_stext\',\'$a1[1]\'\\n\";
$my_stext = \"apple\";
$a2 = array_before_after($my_stext,$my_array);
echo \"\'$a2[0]\',\'$a2[1]\'\\n\";
$my_stext = \"gooseberry\";
$a3 = array_before_after($my_stext,$my_array);
echo \"\'$a3[0]\',\'$a3[1]\'\\n\";
?>
如果需要前面的值,可以使用reset()和next():
<?php
function array_before_after($stext,$array) {
$my_array = $array;
$val = reset($my_array);
$before = \"\";
$after=\"\";
$lim = count($my_array);
for ($i=1; $i<$lim; $i++) {
if ($val == $stext) {
if ( $i<$lim ) $after=next($my_array);
break;
} else {
$before = $val;
}
$val = next($my_array);
}
return array($before,\'$a3[1]\'\\n\";
?>
, $my_array = [\'apple\',\'banana\',\'coconut\',\'duku\',\'emblica\',\'fig\',\'gooseberry\'];
echo $my_array[ 5 ]; // Will print fig
echo $my_array[ 4 ]; // Will print emblica
echo $my_array[ 6 ]; // Will print gooseberry
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。