从包含多个数据字段的数组元素中提取值

时间:2012-01-07 15:29:02

标签: php arrays element

传入数据Feed采用数组形式。但是,每个数组元素都包含多个数据字段(字段名称和字段数据)。下面的示例显示了每个数组元素的内容。使用PHP,如何提取字段名称和相关数据?

感谢您的协助!

stdClass Object (
    [Cancelled] =>
    [MessageID] => 999999
    [Queued] =>
    [ReferenceID] => FRIDAY
    [SMSError] => NoError
    [SMSIncomingMessages] => stdClass Object (
        [SMSIncomingMessage] => stdClass Object (
        [FromPhoneNumber] => 1999999999
        [IncomingMessageID] => 0byyyyyyy 
        [Message] => 45-64-07
        [ResponseReceiveDate] => 2012-01-07
    )
)
[Sent] => 1
[SentDateTime] => 2012-01-07)

2 个答案:

答案 0 :(得分:1)

你拥有的不是一个数组,而是一个对象,所以你必须使用指针访问它。我将展示几个例子: 在此示例中,我将调用您的输出$output

如果这是一个数组,你可以调用这样的元素:

echo $output['MessageID'];
echo $output['SMSIncomingMessages']['SMSIncomingMessage']['IncomingMessageID'];

但由于这是一个stdClass对象,你必须像这样访问它:

// will echo 999999
echo $output->MessageID;

多维度也是如此:

// will echo 0byyyyyyy
echo $output->SMSIncomingMessages->SMSIncomingMessage->IncomingMessageID;

您仍然可以像对待数组一样遍历对象,但是当您访问数组的元素时,仍然必须使用指针访问它们。

答案 1 :(得分:0)

此函数将对多维数组进行排序:

function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) {
    $sort_col = array();
    foreach ($arr as $key=> $row) {
        $sort_col[$key] = $row[$col];
    }

    array_multisort($sort_col, $dir, $arr);
}


array_sort_by_column($array, 'order');