Php 在运行时分解阵列

Php 在运行时分解阵列,php,arrays,loops,while-loop,Php,Arrays,Loops,While Loop,我在一个站点上实现memcached,并且缓存一个特定查询的结果,这很好,但是我在整理代码以设置使缓存可用所需的变量时遇到了问题 我的数组如下所示,其中包含两组数据: Array ( [0] => Array ( [0] => 9126 [id] => 9126 [1] => Oh penguin, you so silly. [title] => Oh penguin, you so silly. [2] => November-01-2011-00-14-

我在一个站点上实现memcached,并且缓存一个特定查询的结果,这很好,但是我在整理代码以设置使缓存可用所需的变量时遇到了问题

我的数组如下所示,其中包含两组数据:

Array ( [0] => Array ( [0] => 9126 [id] => 9126 [1] => Oh penguin, you so silly. [title] => Oh penguin, you so silly. [2] => November-01-2011-00-14-09-ScreenShot20111031at9.jpg [path] => November-01-2011-00-14-09-ScreenShot20111031at9.jpg ) [1] => Array ( [0] => 9131 [id] => 9131 [1] => Reasons you die... [title] => Reasons you die... [2] => November-01-2011-00-17-04-ScreenShot20111031at8.jpg [path] => November-01-2011-00-17-04-ScreenShot20111031at8.jpg ) ) 
我可以手动设置它们,并按如下方式调用它们:

$id = $clean[0][0];
$title = $clean[0][1];
$path = $clean[0][2];
$id = $image["id"];
$path = $image["path"];
$title = $image["title"];
但是我在编写一个WHILE循环来遍历并动态设置变量时遇到了问题。我还尝试了一种针对每一种陈述的方法,但没有结果:

for each($clean as $image){
$id = $image->id;
$path = $image->path;
$title = $image->title;
echo "THIS IS YOUR FREAKING ID $id THIS IS YOUR TITLE $title THIS IS YOUR PATH $path";
}
有什么见解吗

编辑:

解决方案是不将它们称为对象,正如所指出的,更改为如下引用它们:

$id = $clean[0][0];
$title = $clean[0][1];
$path = $clean[0][2];
$id = $image["id"];
$path = $image["path"];
$title = $image["title"];

干杯。

每一杯都会让你受益匪浅。如果您还需要遍历$clean,那么只需环绕另一个foreach即可

$arr =  $clean[0];
foreach ($arr as $value) {
    echo $value; // or in your case set
}

您可以在保存到缓存之前序列化整个阵列,然后在从缓存检索时取消序列化。然后,只需引用您指出的值。

@str为我尝试的每个值添加了“无效”是错误的问题描述,也称为错误消息。但是,当您像对象一样访问数组时,您似乎应该阅读有关数组的内容。此外,它是
foreach
而不是
对于每个
来说,clean变量是未序列化的结果
$clean=(unserialize($cachedResults))通过正确引用它。啊,明白了!根据更新的OP,为什么要使用对象语法引用数组元素?它应该是
$image['id']
,而不是
$image->id
$array = array( 
             array ( 0 => 9126, 
                     'id' => 9126, 
                     1 => 'Oh penguin, you so silly.', 
                     'title' => 'Oh penguin, you so silly.',
                     2 => 'November-01-2011-00-14-09-ScreenShot20111031at9.jpg',
                     'path' => 'November-01-2011-00-14-09-ScreenShot20111031at9.jpg' ),
             array ( 0 => 9126, 
                     'id' => 9126, 
                     1 => 'Oh penguin, you so silly.', 
                     'title' => 'Oh penguin, you so silly.',
                     2 => 'November-01-2011-00-14-09-ScreenShot20111031at9.jpg',
                     'path' => 'November-01-2011-00-14-09-ScreenShot20111031at9.jpg' )
);

foreach( $array as $row)
{
    // Based on your array, you can either do:
    echo $row['id'] . ' ' . $row['title'] . $row['path']. "\n";
    echo $row[0] . ' ' . $row[1] . ' ' . $row[ 2 ] . "\n";
}