为什么这个php foreach没有返回值?

时间:2013-09-15 09:00:00

标签: php

如果您查看下面的代码,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;

2 个答案:

答案 0 :(得分:1)

使用break代替return;

  $array_key=0;

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

来自php return

如果在函数内调用,则return语句立即结束当前函数的执行,并返回其参数作为函数调用的值;如果从全局范围调用,则结束当前脚本文件的执行。如果包含或需要当前脚本文件,则将控制权传递回调用文件。

答案 1 :(得分: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;