2010-08-06 77 views
3

$var是一个数组:PHP调用树对象

Array (
    [0] => stdClass Object ([ID] => 113 [title] => text) 
    [1] => stdClass Object ([ID] => 114 [title] => text text text) 
    [2] => stdClass Object ([ID] => 115 [title] => text text) 
    [3] => stdClass Object ([ID] => 116 [title] => text) 
) 

我们怎么能说[title]一些[ID]? (不接触[0], [1], [2], [3]

一样,如果我们调用$var['114']['title]它应该给text text text

回答

3

你为什么不构建它想:

Array (
    [113] => stdClass Object ([title] => text) 
    [114] => stdClass Object ([title] => text text text) 
    [115] => stdClass Object ([title] => text text) 
    [116] => stdClass Object ([title] => text) 
) 

问题解决了。


说你的记录在$records。你可以把它做:

$newArray = array(); 
foreach ($records as $record) { 
    $id = $record->id; 
    unset($record->id); 
    $newArray[$id] = $record; 
} 

print_r($newArray); 
+0

CMS创建此数组。问题已更新。 – James 2010-08-06 14:31:17

+0

@Ignatz并说CMS不提供更好的方式来访问数据? – NullUserException 2010-08-06 14:41:37

+0

@Ignatz答案已更新 – NullUserException 2010-08-06 15:09:33

6

你不能。

可以使具有ID作为密钥的新阵,之后您可以快速访问标题,或者您也可以通过数组循环每次你需要寻找一些ID时间。

+0

每次循环似乎不是服务表现是个好主意。 – James 2010-08-06 14:31:56

+0

@Ignatz是的,但这不是Sjoerd的错。他只是这样说。您不能忽略数组索引以在没有任何附加代码的情况下转到stdObject属性。 – Gordon 2010-08-06 14:34:39

+0

我不知道你的数据集有多大,但是当你真的有问题时,担心性能通常会更好。如果您线性搜索100个项目的数组中的50个项目,则需要1毫秒的顺序。你的用户会注意到吗?首先解决问题,然后找到热点并优化它们。 – Sjoerd 2010-08-06 16:21:39

1

如果我明白你的权利,那么这里就是我的例子:

<?php 
// This is your first Array 
$var = array(); 

// And here some stdClass Objects in this Array 
$var[] = (object) array('ID' => 113, 'title' => 'text'); 
$var[] = (object) array('ID' => 114, 'title' => 'text text text'); 
$var[] = (object) array('ID' => 115, 'title' => 'text text'); 
$var[] = (object) array('ID' => 116, 'title' => 'text'); 

// Now here the new Array 
$new_var = array(); 
foreach($var as $k => $v) 
{ 
    $new_var[$v->ID] = (array) $v; 
} 

// Now you can use $new_var['113']['title'] and so on 
echo $new_var['113']['title']; 
?> 
+0

如果记录具有更多属性(即:''title'=>'something','date'=> 2009-02-30)'? – NullUserException 2010-08-06 15:22:33

+0

谢谢你,看起来不错 – James 2010-08-06 19:04:07