php вывод массива из json

190
18 октября 2017, 07:45

сейчас я делаю вывод массива skills прямым выводом его элементов, но если в массиве элементов оказывается меньше трех - скрипт не работает, а если больше - они тоже не выводятся. как сделать в цикле вывод всех элементов массива skills ?

//JSON 
{ "skills":[ {"option":"preferred","level":2,"id":159,"name":"Presentation skills"}, {"option":"preferred","level":1,"id":162,"name":"Language Teaching"}, {"option":"preferred","level":2,"id":161,"name":"Sales"} ]}  
 
 
//PHP 
$url = "http://***"; 
$content = file_get_contents($url); 
$decoded = json_decode($content); 
 
$s1name = $decoded->skills[0]->name; 
$s2name = $decoded->skills[1]->name; 
$s3name = $decoded->skills[2]->name; 
 
echo sprintf(' 
<tr> 
  <td class="headings"> Навыки </td> 
  <td class="content">%s</td> 
</tr>', $s1name);  
 
echo sprintf(' 
<tr> 
  <td class="headings"> </td> 
  <td class="content">%s</td> 
</tr>', $s2name);  
 
echo sprintf(' 
<tr> 
  <td class="headings"> </td> 
  <td class="content">%s</td> 
</tr>', $s3name);  
?>

Answer 1

Для работы с массивом используйте циклы. Либо цикл for, который позволит пройтись во всем элементам массива (их количество можно получить функцией count, которую следует вычислить заранее:

$collectionSize = count($decoded);
for($i = 0; $i < $collectionSize; $i++){
    $item = $decoded[$i];
    echo sprintf('
        <tr>
        <td class="headings"> Навыки </td>
        <td class="content">%s</td>
        </tr>', $item->name);
}

Либо можно использовать цикл foreach, который сам вычисляет длину массива, а также позволяет обращаться к элементу массива через временную переменную.

foreach($decoded as $item){
    echo sprintf('
        <tr>
        <td class="headings"> Навыки </td>
        <td class="content">%s</td>
        </tr>', $item->name);
}
READ ALSO
Как каждые 10 часов очищать файл text.txt [дубликат]

Как каждые 10 часов очищать файл text.txt [дубликат]

На данный вопрос уже ответили:

131
Как передать двойные кавычки в форму

Как передать двойные кавычки в форму

Добрый деньУ меня есть форма с текстовым полем Input В это текстовое поле отправляется значение при нажатии на кнопку

196
Вывод данных из mysql за определенный период

Вывод данных из mysql за определенный период

Есть таблица static в ней поля id(int(10)), date(date), datachange(timestamp), name(text), и др

165