Как мне пройти через этот массив? - PullRequest
0 голосов
/ 07 августа 2011

Ну, я относительно новичок в использовании массивов PHP, и у меня есть следующий массив, который мне нужен, чтобы пройти через этот массив 2280 и идентификаторы 2307.

Мне трудно найти метод foreach (), который собирает все данные.

Array
(
[2280] => Array
    (
        [0] => http://deals.com.au//uploads/deal_image/2706.jpg
        [1] => Yuan's Massage and Beauty
        [2] => Get Hair Free in CBD! Only $99 for SIX MONTHS worth of the latest in IPL Permanent Hair Reduction. Choose which area you want treated! Valued at $900 from Yuan's Massage and Beauty in the Heart of Melbourne's CBD. Limited vouchers available
        [3] => 99
        [4] => 900
        [5] => 801
        [6] => http://deals.com.au/1827
    )

[2307] => Array
    (
        [0] => http://deals.com.au//uploads/deal_image/2683.jpg
        [1] => Name Necklace Australia
        [2] => Style yourself like SJP! Only $29 for a STERLING Silver Name Necklace plus get FREE delivery! Valued at $75 with NameNecklace.com.au
        [3] => 29
        [4] => 75
        [5] => 46
        [6] => http://deals.com.au/Melbourne
    )
)

Ответы [ 2 ]

4 голосов
/ 07 августа 2011

Ваш фрагмент кода

$array = array( // foreach ($array as $k=>$subarray)
'2280' /* this is your $k */ => 
    array( /* and this is your $subarray */
        'http://deals.com.au//uploads/deal_image/2706.jpg',

И теперь вы получаете нужные данные (вам пришлось использовать вложенные foreach, поскольку значения вашего массива являются массивами):

foreach ($array as $k=>$subarray) {
    foreach ($subarray as $data) {
        echo $data;//of subarray
    }
}

UPDATE

Ответ на комментарий ОП на мой ответ:

что, если бы я хотел быть избирательным, а не получать массивный дамп данных. если я отображаю $ data, как мне получить доступ к определенным строкам?

Что ж, в большинстве случаев вам следует ассоциировать ключи и данные в вашем массиве (мы называем его ассоциативным массивом в PHP).

Пример 1:

$hex_colors = array('FF0000', '00FF00' '0000FF');

Значения не связаны с соответствующими ключами. PHP сам назначит 0,1,2 ... ключей для элементов массива. В этом случае вы получите шестнадцатеричное значение зеленого цвета, используя автоматически назначенную клавишу PHP 1: echo $hex_colors[1]; // 00FF00, и, конечно, вы должны знать это наверняка. Обычно этот подход используется, когда у вас строгая структура данных, такая как array(red, green, bluee), но в большинстве случаев вам лучше использовать следующий подход:

Пример 2:

$hex_colors = array('red'=>'FF0000', 'green'=>'00FF00' 'blue'=>'0000FF');

шестнадцатеричные представления цветов связаны с соответствующими ключами echo $hex_colors['green']; // 00FF00

Если ваш массив был:

$array = array(
    '2280' => array(
        'image_url' => 'http://deals.com.au//uploads/deal_image/2706.jpg',
        'product_name' => 'Yuan\'s Massage and Beauty',
        'description' => 'Get Hair Free in CBD! Only $99 for SIX MONTHS worth of the latest in IPL Permanent Hair Reduction. Choose which area you want treated! Valued at $900 from Yuan's Massage and Beauty in the Heart of Melbourne's CBD. Limited vouchers available',
        'price' => 99,
        'weight_brutto' => 900,
        'weight_netto' => 801,
        'dealer_store' => 'http://deals.com.au/1827',
        ...

Вы сможете получить доступ к данным с помощью, давайте назовем их «удобочитаемыми» клавишами:

foreach ($array as $id=>$product) {
    echo '<a href="http://myshop.com/?product_id='.$id.'">Buy '.$product['name'].'</a>';
    echo '<img class="product_thumbnail" src="'.$product['image_url'].'" />';
    echo 'Description: '.$product['description'];
    echo 'The price is '.number_format($product['price']);
    ...
}

Хорошо подходит для чтения строк из базы данных, например:

while ($data = mysql_fetch_array($query_result_link, MYSQL_ASSOC)) { 
// MYSQL_ASSOC flag is not necessary
// PHP will use this flag by default for mysql_fetch_array function
// keys of $data will be correspondent columns names returned by mysql query
    echo $data['id'];
    echo $data['title'];
    ...
}

Продолжайте изучать PHP, и вы найдете гораздо больше ситуаций, когда удобнее связывать ключи и значения.

1 голос
/ 07 августа 2011
foreach ($arr1 as $key1 => $value1) {

    //$key1==2280; $value1 is the array
    foreach ($value1 as $key2 => $value2) {
        //$key2==0;$value2="http://deals.com.au//uploads/deal_image/2706.jpg"
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...