Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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 在数组中搜索并以最佳方式找到1对?_Php_Arrays - Fatal编程技术网

Php 在数组中搜索并以最佳方式找到1对?

Php 在数组中搜索并以最佳方式找到1对?,php,arrays,Php,Arrays,假设我们有一个简单的(非assoc)数组,其中包含100001个值,这些值按未排序的顺序设置,如45、12、32、23。我们知道,在这个数组中有一对数字,如何找到它的最佳值-不是通过2个foreach循环,甚至不是通过2个for循环和100001/2除法 使用: 使用: 由于数组未排序,因此除了随机散点以外,唯一的搜索方法是按顺序扫描数组并查找两个数字: $first_key = null; $second_key = null; foreach($array as $key => $v

假设我们有一个简单的(非assoc)数组,其中包含100001个值,这些值按未排序的顺序设置,如45、12、32、23。我们知道,在这个数组中有一对数字,如何找到它的最佳值-不是通过2个foreach循环,甚至不是通过2个for循环和100001/2除法

使用:

使用:


由于数组未排序,因此除了随机散点以外,唯一的搜索方法是按顺序扫描数组并查找两个数字:

$first_key = null;
$second_key = null;

foreach($array as $key => $val) {
    if ($val == $first_number) {
       $first_key = $key;
    }
    if ($val == $second_number) {
       $second_key = $key;
    }
    if (!is_null($first_key) && !is_null($second_key)) {
        break;
    }
}

一旦找到两个数字,或者到达数组的末尾,循环将退出。

由于数组未排序,因此除了随机散点以外,唯一的搜索方法是按顺序扫描数组并查找两个数字:

$first_key = null;
$second_key = null;

foreach($array as $key => $val) {
    if ($val == $first_number) {
       $first_key = $key;
    }
    if ($val == $second_number) {
       $second_key = $key;
    }
    if (!is_null($first_key) && !is_null($second_key)) {
        break;
    }
}

一旦找到两个数字,或者到达数组的末尾,循环将退出。

那么从1到100000的数字和一个重复的还是什么?或者几个数字是什么?是的,1个,对不起,我只是个俄罗斯人-bad Engl=)就像我说的,我用两种方法解决了这个问题一种是通过数组做两个循环,一个一个比较,另一种是在2上除法,从开始/开始循环1-st,第二个从结束到结束/实际上是一半。那么数字从1到100000,还有一个重复,或者怎么样?或者说几个数字是什么?是的,1个简单,对不起,我只是个俄罗斯人-糟糕的英语=)就像我说的,我用两种方法解决了这个问题。一种是通过数组做两个循环,一个一个比较,另一种是在2上除法,从开始/开始循环1-st,从结束到开始/实际上是一半。伙计,放松点。1) 此代码将查找任意数字的任意对,“2”表示“对”。阅读手册。2) php函数总是比代码运行得更快。如果这是你的家庭作业和理论问题,那就在男人身上问吧,放松点。1) 此代码将查找任意数字的任意对,“2”表示“对”。阅读手册。2) php函数总是比代码运行得更快。如果这是你的家庭作业和理论问题-问它可能你的意思是这
foreach($arr AS$val1){foreach($arr AS$val2){If($val1===$val2)return$val1;}}
不,就像我说的,这是次优的,我知道这一点,并且已经写过了。伙计们,我读得很仔细。您发布了一些逗号分隔的数字片段,并说您想查找“两个数字”。也许你应该说,如果它是一个多维数组,或者更好,发布一大块var\u dump/print\r输出来演示它的真实外观。是吗?然后呢<代码>$array[0]=1$数组[100001]=42。好了,100001个数组元素。我的眼睛很好,你需要提高你的提问能力。也许你是说这是
foreach($arr AS$val1){foreach($arr AS$val2){if($val1===$val2)return$val1;}}}
nope,就像我说的,这是次优的,我知道这一点,并且已经写过了。伙计们,我读得很仔细。您发布了一些逗号分隔的数字片段,并说您想查找“两个数字”。也许你应该说,如果它是一个多维数组,或者更好,发布一大块var\u dump/print\r输出来演示它的真实外观。是吗?然后呢<代码>$array[0]=1$数组[100001]=42。好了,100001个数组元素。我的眼睛很好,你需要提高你的提问能力。