Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组对象匹配值_Php_Arrays - Fatal编程技术网

Php 从数组对象匹配值

Php 从数组对象匹配值,php,arrays,Php,Arrays,我有一个带有项目ID的PHP页面。我使用一个类运行一个查询,并返回与此项目ID关联的某些项的属性数据集。数据以以下对象格式返回: Array ( [0] => stdClass Object ( [id] => 1 [projectID] => 469 [itemID] => item_1 [weight] => 20 [length] => medium )

我有一个带有项目ID的PHP页面。我使用一个类运行一个查询,并返回与此项目ID关联的某些项的属性数据集。数据以以下对象格式返回:

Array
(

[0] => stdClass Object
    (
        [id] => 1
        [projectID] => 469
        [itemID] => item_1
        [weight] => 20
        [length] => medium
    )

[1] => stdClass Object
    (
        [id] => 2
        [projectID] => 469
        [itemID] => item_2
        [weight] => 50
        [length] => medium
    )

[2] => stdClass Object
    (
        [id] => 3
        [projectID] => 469
        [itemID] => item_4
        [weight] => 75
        [length] => long
    )

) 
因此,现在我需要将这些属性添加到page元素中。每个页面元素都有唯一的ID,该ID与返回数据中的itemID相匹配,但我很难弄清楚如何匹配这两个元素

<div id="item_2">'.( $myarray[1]['itemID'] == 'item_2' ?  
    $myarray[1]['weight'] : '0' ).' lb</div>

<div id="item_2">'.( $myarray[1]['itemID'] == 'item_2' ?  
    $myarray[1]['length'] : '0' ).' ft</div>


<div id="item_3">'.( $myarray[2]['itemID'] == 'item_3' ?  
    $myarray[2]['weight'] : '0' ).' lb</div>

<div id="item_3">'.( $myarray[2]['itemID'] == 'item_3' ?  
    $myarray[2]['length'] : '0' ).' ft</div>
($myarray[1]['itemID']=='item_2'? $myarray[1]['weight']:'0').'lb “。($myarray[1]['itemID']=='item_2'? $myarray[1]['length']:'0')。'ft “.($myarray[2]['itemID']=='item_3'? $myarray[2]['weight']:'0').'lb “.($myarray[2]['itemID']=='item_3'? $myarray[2]['length']:'0')。'ft
假设
item\u id
键是唯一的,此代码将从原始数组创建由
item\u id
索引的数组

$newArr = array();
//create reindexed array based on data from original array ($orgArr)
array_walk($orgArr, function($v) use (& $newArr) { $newArr[$v->item_id] = $v; } );
然后,您可以通过以下方式访问各个属性

echo $newArr['item_1']->weight;
echo $newArr['item_2']->length;

如果
itemId
键是唯一的,则创建一个循环(或使用array\u walk),该循环将遍历返回的对象数组,并生成由
itemId
索引的数组。然后在索引
$arr['item_3']
下,您将拥有来自原始数组的数据,因此您可以例如echo
。$arr['item_3']->wiegth.
。不知道这是不是你的意思。我想你们应该重新编辑这个问题,让它更清楚。我可以在一个页面上有一些项目,我想这会影响我的加载时间,因为我需要循环通过这个数组来匹配每个项目的一组属性。我希望我可以简单地做$myarray['item_4']['weight'],但我不能,除非我添加顶级节点ID,即$myarray[2]['item_4']['weight']。有没有办法打破这个巨大的物体?如果你在整个数组中迭代一次并从原来的数组中创建另一个数组,你可以简单地执行
$myarray['item_4']->权重
。我不知道我该如何创建另一个数组。每个项目都必须有一个数组?是的,创建另一个数组,或者用
itemId
数字键替换默认数字键。