-1

以下のコードを見ると、がステートメントreturn内にある場合、何もエコーアウトされません。ifを取得するreturn outと、正しい値がエコーされます。どうしてこれなの?

$images=  Array(
   [0] => Array
    (
        [id] => 131],
        [width] => 400]

     ),
   [1] => Array
    (
        [id] => 140],
        [width] => 900]
     )
  )

  $array_key=0;
  foreach($images as $key => $image){                 
      if($image['id'] == $image_id){
         $array_key= $key;
         return;       
        }
   }             
  echo $array_key;
4

2 に答える 2

1

break返す代わりに使用します。

  $array_key=0;

  foreach($images as $key => $image){                 
     if($image['id'] == $image_id){
        $array_key= $key;
        break;       
     }
  }

PHPリターンから:

関数内から呼び出された場合、return ステートメントは現在の関数の実行を直ちに終了し、その引数を関数呼び出しの値として返します。グローバル スコープから呼び出された場合、現在のスクリプト ファイルの実行は終了します。現在のスクリプト ファイルが含まれているか必要な場合、制御は呼び出し元のファイルに戻されます。

于 2013-09-15T09:01:46.550 に答える
0

これが作業コードです。

breakステートメントを追加する必要があり、$image_id値を定義する必要があります。

<?php
$images=  Array(
   0 => Array
       (
       'id' => 131,
        'width' => 400

     ),
   1 => Array
    (
    'id' => 140,
     'width' => 900
     )
  );

  $array_key=0;
  $image_id=140;
  foreach($images as $key => $image){
      if($image['id'] == $image_id){
          $array_key= $key;
          break;
          ///return;
      }
  }
echo $array_key;
于 2013-09-15T09:06:08.753 に答える