Разбивая массив WHILE - PullRequest
0 голосов
/ 04 ноября 2011

Я внедряю 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];

Но яУ меня проблемы с написанием цикла WHILE, чтобы пройти и установить переменные динамически.Я также попробовал оператор FOR EACH безрезультатно:

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 = $image["id"];
$path = $image["path"];
$title = $image["title"];

Приветствия.

Ответы [ 3 ]

1 голос
/ 04 ноября 2011
$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";
}
0 голосов
/ 04 ноября 2011

Вы можете просто сериализовать весь массив перед сохранением в кеше, а затем десериализовать при получении из кеша.Затем просто укажите значения, как вы указали.

0 голосов
/ 04 ноября 2011

Для каждого должно служить вам хорошо. Если вам нужно перебрать и $ clean, просто оберните другой foreach.

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