群里有人问,有个数组五个元素 分为1到5 如今要求 循环找出3元素的索引,怎么作性能才是最高。 php
我不知道哪一个性能最高,可是我想提出能够用多种方式进行查找,而后进行比较选择。数组
我想,最简单最基础的 应该是循环,循环到它,那就是它。固然也能够用PHP提供的数组查找 array_search。这都是能想获得的,那么我想说的是,剑走偏锋,老铁是否尝试过 键值反转进行查找呢?函数
array_flip键值反转,可以将你须要的键变值,值变键,而后取数组下标,便可获得这个位置。性能
代码以下:spa
<?php $array=array(2,3,4,1,5); //找到3所处的位置 $find=3; //第一种方式 循环解决 此举相似于 for while等循环 function find_by_foreach($array,$find) { foreach ($array as $key => $v) { if($v==$find) { return $key; } } } //第二种方式 利用数组查找 找到所须要元素的索引位置 function find_by_array_search($array,$find) { return array_search($find,$array); } //第三种方式 键值反转 经过值查找键 function find_by_array_flip($array,$find) { $array=array_flip($array); return $array[$find]; } var_dump(find_by_foreach($array,$find)); var_dump(find_by_array_search($array,$find)); var_dump(find_by_array_flip($array,$find));
效果如图: 3d
好,咱们再考虑一个问题,刚刚咱们都在用数组的思惟进行解决问题,若是说,这个数组不想被循环,或者放弃数组的思路又该如何解决呢?code
很天然,咱们能够想到依靠字符串。那么字符串的函数也是很是多的,PHP在这方面的功劳是竭尽全力。blog
代码以下:索引
<?php //第四种方式 字符串查找 function find_by_string($array,$find) { $string=implode($array); return strpos($string,$find.""); }
效果如图:ip
针对本题而言,字符串查找是可行的,可是若是换一个场景,数组中出现了重复或者要查找的元素,不能出现完整匹配的状况的时候,这个查找就是失败的,请思考一下这是为何。