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