在PHP中,如何分辨数组中特定值附近的值?

如何解决在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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?