Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多维数组-如何从一个函数中使其工作?_Php_Multidimensional Array - Fatal编程技术网

Php 多维数组-如何从一个函数中使其工作?

Php 多维数组-如何从一个函数中使其工作?,php,multidimensional-array,Php,Multidimensional Array,我有一组多维数组中的信息,如下所示: $slides = array ( array ( 'link' => 'page.php', 'image' => 'image1.jpg', 'alt' => 'text for alt' ), array ( 'link' => 'anotherpage.php', 'image' => 'image2.jpg',

我有一组多维数组中的信息,如下所示:

$slides = array (
    array (
        'link' => 'page.php',
        'image' => 'image1.jpg',
        'alt' => 'text for alt' 
    ),
    array (
        'link' => 'anotherpage.php',
        'image' => 'image2.jpg',
        'alt' => 'text for alt' 
    )
);
目前使用的是:

foreach($slides as $slide => $data){
    echo "<a href=\"{$data['link']}\">
        <img src=\"{$data['image']}\" alt=\"{$data['alt']}\" />
        </a>";
}

我试过了,但我认为我误解了如何传递数组,因为它是一种语言构造,而不是对象。这是我第一次使用多维数组。另外,我想我可以控制函数参数中的
$data
内容,即
echo createSlides($slides[1,2,4])。我是误解了这一点,还是仅仅因为数组没有传递到函数中?

我不确定您是否要求这样做,但就像普通参数一样:

function createSlides($slides){
   foreach($slides as $slide => $data){
       echo "<a href=\"{$data['link']}\">
          <img src=\"{$data['image']}\" alt=\"{$data['alt']}\" />
       </a>";
   }
}

createSlides($slides);
函数createSlides($slides){
foreach($slides作为$slide=>$data的幻灯片){
回声“;
}
}
创建幻灯片($slides);

您试过吗。。。?阵列可以很好地传递。我总是这样做。对象唯一没有做的事情就是让你以调用方可以看到的方式修改它们,甚至可以通过引用传递来修复。我不知道发生了什么变化,但它现在确实起作用了。如何控制
$data
,我如何才能做到这一点<代码>回声幻灯片内容($slides[1,2])会破坏代码。当然会。PHP不会这样做P您需要调用一些只返回所需内容的函数。@yUnoDOWNVOTE:您将创建一个只包含所需元素的新数组,请看。@cHao我学习php才2个月-您的讽刺在这里没有力量;)啊,好吧,它需要一个新的数组-现在它有意义了。谢谢你的帮助!对于问题的第二部分,您可以传递第二个参数,例如
function createSlides($slides,$filter=array()){…}
,然后简单地将这一行放在循环前面:
if!空($filter)$slides=array\u diff\u key($slides,$filter)-现在您可以只传递一组要打印的索引:
createSlides($slides,array(0,2))
将只打印第一张和第三张幻灯片。我喜欢这种情况下的方法,这样可以更容易地根据需要配置它@准扣篮Thanks@yUnoDOWNVOTE不客气。请注意,第二个参数是可选的,在调用函数时不必传递它。如果未通过/指定(或具有预定义值),则打印所有幻灯片。这个概念相当于
重载函数
,您可能从Java或C#等其他语言中了解到@史蒂夫:请在你的答案中写上这个,这样就涵盖了整个问题:)
function createSlides($slides){
   foreach($slides as $slide => $data){
       echo "<a href=\"{$data['link']}\">
          <img src=\"{$data['image']}\" alt=\"{$data['alt']}\" />
       </a>";
   }
}

createSlides($slides);