Указание объекта в массиве PHP из JSON - PullRequest
0 голосов
/ 14 февраля 2012

Я пытаюсь использовать определенный тип объекта из фида JSON, и мне трудно его указать. Используя приведенный ниже код, я беру и печатаю определенный массив (макс.), Который мне нужен,

<code>$jsonurl = "LINK";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json,true);
$max_output = $json_output["max"];

echo '<pre>';
print_r($max_output);
echo '
';

А из массива ниже все, с чем я хочу работать, это объекты [1] в каждом массиве. Как я могу указать и получить только эти значения?

Array
(
[0] => Array
    (
        [0] => 1309924800000
        [1] => 28877
    )

[1] => Array
    (
        [0] => 1310011200000
        [1] => 29807
    )

[2] => Array
    (
        [0] => 1310097600000
        [1] => 33345
    )

[3] => Array
    (
        [0] => 1310184000000
        [1] => 33345
    )

[4] => Array
    (
        [0] => 1310270400000
        [1] => 33345
    )

[5] => Array
    (
        [0] => 1310356800000
        [1] => 40703
    )

Ответы [ 4 ]

1 голос
/ 14 февраля 2012

Когда вам нужно создать новый массив, который будет содержать только вторые значения, вы можете использовать либо цикл foreach, который его создаст, либо использовать array_map() (просто для удовольствия с анонимной функцией ) доступно с php 5.3.0):

$newArray = array_map( function( $item){
    return $item[1]
},$array);

Затем вы хотите использовать последний ("max" -> учитывая массив с числовыми ключами) элемент, вы можете использовать end():

return end( $item);

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

foreach( $items as $key => $val){
    echo $val[1] . " is my number\n";
}
1 голос
/ 14 февраля 2012

Ну, вы можете получить эти значения с помощью array_map:

$max_output = array_map(function($val) { return $val[1]; }, $json_output["max"]);

Это требует PHP 5.3, если вы используете более раннюю версию, то вы можете использовать create_function для достижения аналогичных результатов:

$max_output = array_map(create_function('$val', 'return $val[1];'), $json_output["max"]);
0 голосов
/ 14 февраля 2012

попробуйте это:

$ones = array();
foreach ($max_output as $r)
    $ones[] = $r[1];
0 голосов
/ 14 февраля 2012

После того, как вы получите $max_output ...

for( $i = 0; $i < length( $max_output ); $i++ ) {
    $max_output[$i] = $max_output[$i][1];
}
...