Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php获取数组的数字位置_Php_Arrays_Search_Numbers_Position - Fatal编程技术网

如何使用php获取数组的数字位置

如何使用php获取数组的数字位置,php,arrays,search,numbers,position,Php,Arrays,Search,Numbers,Position,我想获得数组中值的精确数字位置 数组值: $val = array('banana' , 'second' , 'apple'); 当用户搜索苹果的值时 它将显示 三, 因为这是第三个元素 当用户搜索香蕉时 它将显示 一, 使用like-so: $num = array_search('banana', $array) + 1; 除了检查数组和检查之外,没有其他方法(与其他答案的建议相反)。根据数组的特定形状(值或键),任何其他解决方案都将是一种黑客攻击 将返回一个值为2的数组(数组中所有值

我想获得数组中值的精确数字位置

数组值:

$val = array('banana' , 'second' , 'apple');
当用户搜索苹果的值时

它将显示

三,

因为这是第三个元素

当用户搜索香蕉时

它将显示

一,

使用like-so:

$num = array_search('banana', $array) + 1;
除了检查数组和检查之外,没有其他方法(与其他答案的建议相反)。根据数组的特定形状(值或键),任何其他解决方案都将是一种黑客攻击

将返回一个值为2的数组(数组中所有值为“apple”的索引)

然后,您只需获取该数组的第一个元素并添加1

$numericPosition = current($keys)
如果$keys为空,即数组中不存在“apple”,则$numericPosition===false,否则添加1。这确保了您可以实际检测到某个值何时不存在,如果您只需将1添加到当前($keys)中,则数组中不存在的任何值都将位于位置1


编辑:另一个答案的数组搜索将只返回给定值的第一个键,因此它可能更符合您的需要,只需确保在添加1之前检查是否为false。

array\u search(),但不要忘记数组键从0开始;因此,如果您想让它看起来像是从1
echo array_flip($val)['banana']+1开始,请添加1-未测试,您可能需要使用foreach或类似工具construct@N.B.:这种语法在PHP<5.4中不起作用(也不是
array\u search
更好吗?。@RocketHazmat-是的,array\u search速度明显更快。至于低于5.4的php——好吧,使用它的人运气不好:)那么
array\u search
是黑客吗?@RocketHazmat是的。它不返回索引,而是返回键。如果您的数组恰好具有与索引相等的键,那么它将正常工作。如果没有,则会自动中断。@fdreger:
array\u search
适用于数值数组和关联数组,返回数组中的(第一个)键(不是索引),值为:@RocketHazmat:yes,键。这就是问题所在。问题是“精确的数字位置”,而不是“精确的键”。这两个值在许多数组中正好相关。但并不总是如此。@fdreger:很公平。:-)
$word = 'banana';
$position = array_search($word, $val) + 1;
$keys= array_keys($val, "apple")
$numericPosition = current($keys)