我有一个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
答案 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();