Помогите разобрать JSON

Samail
На сайте с 10.05.2007
Offline
361
843

Кусок массива:


{
"1": {
"price": 25,
"strengthRate": 1,
"priceRes": {},
"image": "http://***.com//1.png",
"importance": 27,
"title_en": "Name",
"title_ru": "Название 1",
},
"2": {
"title_en": "*****",
"descr_en": "***********",
"descr_ru": "Описание.",
"title_ru": "Название 2",
"price": 80,
"image": "http://***.com//2.png",
"drop": {
"wood": 2,
"coin": 58
},
"cat": 2,
},
}

Сейчас вывожу примерно вот так:


<?php
$jsonString = file_get_contents('http://*****.com/json');
$cart = json_decode( $jsonString, true );
?>

<table width="880" border="1
" cellspacing="10" cellpadding="10">
<tr>
<td>
<div><?php echo $cart['1']['title_ru']; ?></div>
<div><img src="<?php echo $cart['1']['image']; ?>" /></div>
<div>Цена: <?php echo $cart['1']['price']; ?></div>
<div><?php echo round($cart['1']['price']*0.05); ?></div>
<div><?php echo $cart['1']['drop']['wood']; ?></div>
<div><?php echo $cart['1']['descr_ru']; ?></div>
</td>
<td>
<div><?php echo $cart['2']['title_ru']; ?></div>
<div><img src="<?php echo $cart['2']['image']; ?>" /></div>
<div>Цена: <?php echo $cart['2']['price']; ?></div>
<div><?php echo round($cart['2']['price']*0.05); ?></div>
<div><?php echo $cart['2']['drop']['wood']; ?></div>
<div><?php echo $cart['2']['descr_ru']; ?></div>
</td>
<td>
<div><?php echo $cart['169']['title_ru']; ?></div>
<div><img src="<?php echo $cart['169']['image']; ?>" /></div>
<div>Цена: <?php echo $cart['169']['price']; ?></div>
<div><?php echo round($cart['169']['price']*0.05); ?></div>
<div><?php echo $cart['169']['drop']['wood']; ?></div>
<div><?php echo $cart['169']['descr_ru']; ?></div>
</td>
</table>

Нужно сделать, что-бы не вручную все номера прописывать, а объекты выводились сами сколько их там есть в 3 колонки.

Кроме того, вот этот кусок:

      "drop": {

"wood": 2,
"coin": 58
},

Должен вывестись как "wood: 2, coin: 58", при этом wood должно меняться на дерево, coin на монеты. Т.е.е что-бы в итоге выглядело как: "дерево: 2, монеты: 58".

siv1987
На сайте с 02.04.2009
Offline
427
#1


<table width="880" border="1" cellspacing="10" cellpadding="10">
<tr>
<?php foreach($cart as $k => $v): ?>
<td>
<div><?=$v['title_ru'];?></div>
<div><img src="<?=$v['image'];?>" /></div>
<div>Цена: <?=$v['price'];?></div>
<div><?=round($v['price']*0.05); ?></div>
<?php if(is_array($v['drop'])): ?>
<div>Дерево: <?=$v['drop']['wood']; ?>, монеты: <?=$v['drop']['coin']; ?></div>
<?php endif; ?>
<div><?=$v['descr_ru']; ?></div>
</td>
<?php endforeach; ?>
</tr>
</table>
Samail
На сайте с 10.05.2007
Offline
361
#2

Спасибо. А как вывести саму циферку? Вот эту:

"1": {
ДП
На сайте с 23.11.2009
Offline
203
#3

внутри цикла: <?=$k;?>

Samail
На сайте с 10.05.2007
Offline
361
#4

Вроде всё выводится как надо, но вперемешку все категории. В Массиве указаны категории ("cat": 1,)

Пока в голову приходит только наделать табличек по числу категории, вот так:

<table width="880" border="1" cellspacing="10" cellpadding="10"> 

<tr>
<?php foreach($cart as $k => $v): ?>
<?php if($v['cat']=1): ?>

<table width="880" border="1" cellspacing="10" cellpadding="10"> 

<tr>
<?php foreach($cart as $k => $v): ?>
<?php if($v['cat']=2): ?>

Нормальный вариант или есть более правильный?

Кроме того, есть ли возможность искать у каких объектов существует переменная например

<?=$v['drop']['wood']; ?>

И вывестись через запятую значения:

<?=$k;?> <?=$v['title_ru'];?> - <?=$v['drop']['wood']; ?>, 

И так в нужном месте по очереди через запятую, значения этих переменных из всех массивов у которых присутствует ['drop']['wood']

---------- Добавлено 15.07.2014 в 02:39 ----------

Samail:

<table width="880" border="1" cellspacing="10" cellpadding="10">
<tr>
<?php foreach($cart as $k => $v): ?>
<?php if($v['cat']=1): ?>

Уже понял что так неправильно :)

Нужно где-то здесь это условие указать наверное

<?php foreach($cart as $k => $v): ?>
siv1987
На сайте с 02.04.2009
Offline
427
#5

tr'ы поставьте внутри цикла

Samail
На сайте с 10.05.2007
Offline
361
#6

..................

Mad_Man
На сайте с 10.11.2008
Offline
162
#7
Samail:
if($v['cat']=2)

Вам точно нужно присваивание, а не сравнение?

Samail
На сайте с 10.05.2007
Offline
361
#8
Mad_Man:
Вам точно нужно присваивание, а не сравнение?

Да там ошибка была, сейчас == стоит.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий