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

4つの値は$ imgです。なぜ私は$ 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の配列は、それが第一の位置に当たるときに、 'if'文は偽と評価された '0'の位置で始まるかどうそれはそう0を返します。 。 –

+0

array_searchの代わりに単純なin_arrayを使用する – JYoThI

+0

array_search()の代わりにin_array()を使用します。 array_searchは配列内の要素の位置を示しますが、in_arrayは要素が配列内にあるかどうかを指定しているため、 – GYaN

答えて

3

あなたはこのようarray_search()使用する必要があります。ドキュメントから

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

を:

この関数は論理値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

私は助けこのコードを願っています...それは、その後発見されないelement.if

<?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は常に検索のインデックスを返しますが、我々は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

これをチェックすると、それはyou.in 'のために働くでしょうif'条件if array_search '0'インデックスを返すと 'if'条件のために偽であり、else部分に行くでしょう。 – gaurav

0

提案:シンプルな使用in_arrayの代わりarray_searchin_array return true arrayに値が存在する場合は、falseを返します。 array_searchは、値が提示された場合はkeyを返します。最初の値(存在する場合)の文は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(); 

?> 
関連する問題