2017-08-12 169 views
2
why did not show first value of $img by array_search() 

有$ img哪里有4个值。我不知道为什么总是不显示$ img($ img [0])的第一个值;如果我改变了第一个值然后是同样的问题请告诉我问题在哪里?

function auto_call(){ 
$img=array("png","jpeg","gif","jpg"); 
$arrt=array("txt","jpg","png","gif","jpeg"); 
for($j=0;$j<count($arrt);$j++){ 
if(array_search($arrt[$j],$img)){ 
echo $arrt[$j]."<br/>"; 
} 
} 
} 
auto_call(); 

//the result is: 
jpg 
gif 
jpeg 
+0

PHP阵列位置'0'所以当它在第一位置命中,'if'声明被评估为假开始。 –

+0

简单使用in_array代替array_search – JYoThI

+0

使用in_array()代替array_search()。因为array_search给出了数组中的元素的位置,但in_array指定该元素是否在数组中 – GYaN

回答

3

你应该使用array_search()这样的:

if(array_search($arrt[$j],$img) !== FALSE){ 

从文档:

这个函数可以返回布尔值FALSE,但也可能返回后者评估 非布尔值变为假。

更新代码:

<?php 
function auto_call(){ 
    $img=array("png","jpeg","gif","jpg"); 
    $arrt=array("txt","jpg","png","gif","jpeg"); 
    for($j=0;$j<count($arrt);$j++){ 
     if(array_search($arrt[$j],$img) !== FALSE){ 
      echo $arrt[$j]."<br/>"; 
     } 
    } 
} 
auto_call(); 

?> 
+1

我同意这个答案只是扩展它。 'array_search'函数返回第一个位置的'0',但它也是被评估为'false'的值。 PHP数组以'0'开头! –

0

我希望帮助这个代码...

<?php 
function auto_call(){ 
$img=array("png","jpeg","gif","jpg"); 
$arrt=array("txt","jpg","png","gif","jpeg"); 
for($j=0;$j<count($arrt);$j++){ 
if(array_search($arrt[$j],$img) !==FALSE){ 
echo $arrt[$j]."<br/>"; 
} 
} 
} 
auto_call(); 
?> 
0

array_search总是返回搜索的索引element.if它没有找到,那么false.so我们返回正在使用类似的东西来返回所有的搜索元素。

function auto_call(){ 
$img=array("png","jpeg","gif","jpg"); 
$arrt=array("txt","jpg","png","gif","jpeg"); 
for($j=0;$j<count($arrt);$j++){ 
    if(array_search($arrt[$j],$img) || array_search($arrt[$j],$img) === 0){ 
     echo $arrt[$j]."<br/>"; 
    } 
} 
auto_call(); 
+0

检查这一个,它会为你工作。'如果'条件是否如果array_search返回'0'索引,那么它是假的'if'条件,它会去其他部分。 – gaurav

0

建议:简单使用in_array代替array_searchin_array返回true如果值存在于数组中,则返回false。如果显示值,array_search将返回key。如果存在第一个值将返回0所以如果声明将fail这里这么简单的使用in_array

<?php 
function auto_call(){ 
    $img=array("png","jpeg","gif","jpg"); 
    $arrt=array("txt","jpg","png","gif","jpeg"); 
    for($j=0;$j<count($arrt);$j++){ 
     if(in_array($arrt[$j],$img)){ 
      echo $arrt[$j]."<br/>"; 
     } 
    } 
} 
auto_call(); 

?> 
相关问题