如果函数内部有循环,如何制作和调用函数?

时间:2015-02-03 20:46:00

标签: php arrays function for-loop

我有一个for循环,显示数组内的所有图像。我怎么能把它放在一个函数内部,所以当我需要它时我可以调用它并显示所有图片?

$countArray = count($fil[0]);

function displayAllImages(){
for ($x=0; $x<$countArray; $x++){
    echo '<img src="photos/'.$fil[0][$x].'" /><br />';
}
}
displayAllImages(); //nothing shows up

2 个答案:

答案 0 :(得分:2)

由于您在函数外部声明了$ fil和$ countArray,因此您无权访问它们,因此您应该将该数组作为函数参数传递

function displayAllImages($images){
  $counter = count($images[0]);
  for ($x=0; $x < $counter; $x++){
      echo '<img src="photos/'.$images[0][$x].'" /><br />';
  }
}
displayAllImages($countArray, $fil); //now it will show up

执行此类操作的最佳方法可能是以下使用foreach循环:

function displayAllImages($imagesSources){
  foreach($imagesSources as $value){
    echo '<img src="photos/'.$value.'" /><br />';
  }
}

$images = array("image1.png", "image2.png", "image3.png");
displayAllImages($images);

$images = array("0" => array("image1.png", "image2.png", "image3.png"));
//in this case you can pass directly $images[0] to the function as pointed in the comments
displayAllImages($images[0]);

并且在评论中指出了php变量范围HERE

答案 1 :(得分:1)

原因是,您在函数内部使用了一个未声明的变量 激活error_reporting,PHP应该注意,$ countArray没有被声明。

2种可能性:

将functino数组作为参数:

// $fil[0] is an array

function displayAllImages($a)
{
    if(is_array($a)) foreach($a as $i => $v)
    {
        echo '<img src="photos/'.$v.'" /><br />';
    }
}
displayAllImages($fil[0]);

或者告诉PHP函数内部,你想在函数外面使用一个变量:

// $fil[0] is an array

function displayAllImages()
{
    global $fil;
    if(is_array($fil[0])) foreach($fil[0] as $i => $v)
    {
        echo '<img src="photos/'.$v.'" /><br />';
    }
}
displayAllImages();

请查看http://php.net/manual/en/language.variables.scope.php