基于块中包含的值获取数组块的最快方法(不工作)

时间:2014-03-10 14:00:45

标签: php

https://gist.github.com/jcranny/9465715

我有这个数组(例子)......

Array
(
    [0] => Array
        (
            [series] => stdClass Object
                (
                    [term_id] => 5
                    [name] => Moto2 2013
                    [slug] => moto2-2013
                    [term_group] => 0
                    [term_taxonomy_id] => 3
                )

            [race_number] => 77
            [team] => Technomah carXpert
            [constructor] => Suter
            [machine] => Honda CBR600RR
        )
    [1] => Array
        (
            [series] => stdClass Object
                (
                    [term_id] => 6
                    [name] => Moto2 2014
                    [slug] => moto2-2014
                    [term_group] => 0
                    [term_taxonomy_id] => 3
                )

            [race_number] => 15
            [team] => La Fonte Tascaracing
            [constructor] => Suter
            [machine] => Honda CBR600RR
        )
    [2] => Array
        (
            [series] => stdClass Object
                (
                    [term_id] => 7
                    [name] => Moto2 2015
                    [slug] => moto2-2015
                    [term_group] => 0
                    [term_taxonomy_id] => 3
                )

            [race_number] => 15
            [team] => Mapfre Aspar Team Moto2
            [constructor] => Suter
            [machine] => Honda CBR600RR
        )
)

现在我希望能够从每个区块获取信息。

例如,我想回应这些数据:

  • [race_number]
  • [组]
  • [构造]
  • [机器]

但我只希望回应与特定 [系列]相关的数据

我有 [系列] term_id所以这是获取相关数据的关键,但我很难让我的节点功能正常工作。


这是执行此操作的功能:

function node_modify_riders_array($rider_id)
{
        $fields = get_field("rider_series_data", $rider_id);
        foreach($fields as $field_key => $field_val)
        {
            $new_fields[$field_val["series"]] = $field_val;
        }
return $new_fields; 
}


然后,这就是我如何获得基于系列术语id的系列特定数据。

$rider_series_data    = node_modify_riders_array($rider_id);    
$series_id            = $series[0]->term_id;

$team            = $rider_series_data[$series_id]["team"];
$contstructor    = $rider_series_data[$series_id]["constructor"];   
$machine         = $rider_series_data[$series_id]["machine"];
$race_number     = $rider_series_data[$series_id]["race_number"];


但是有些事情是错的,我可以解决它。任何人都可以看到我出错的地方或帮我修复它。

提前非常感谢,真的很感激一些帮助。


问题是什么:

我的函数node_modify_riders_array返回null,这导致我的$team$contstructor$machine$race_number也没有输出任何内容。

如果我在示例中回显$series_id,我会得到6

哪个应该通过我的node_modify_riders_array函数并显示相关的数组值。但它没有输出任何东西,我没有错误。

这是我的完整代码,因此您可以看到我想要做的事情......

https://gist.github.com/jcranny/9465715

1 个答案:

答案 0 :(得分:1)

您使用object作为数组键,而不是term_id对象的series

function node_modify_riders_array($rider_id)
{
        $fields = get_field("rider_series_data", $rider_id);
        foreach($fields as $field_key => $field_val)
        {
            $new_fields[$field_val["series"]->term_id] = $field_val;
                                          //^^^^^^^^^  <--- add this
        }
        return $new_fields; 
}