为了搜索包含大量信息的数组,我尝试从PHP.net的手册中实现一些想法,但是,我失败了。
我的目标是在数组中搜索给定值,如果找到该值,我需要获取与其相关的所有信息。请参阅数组示例和PHP代码。
因此对于RoomCode 117 =数组中的PropertyId 而且我想抓住所有的财产
PHP:
$RoomCode = 117
echo in_array($RoomCode, $_SESSION['PROPERTY_ARR']);
ARRAY:
Array
(
[Property One] => Array
(
[Property] => Bolt Hole
[PropertyId] => 117
[LocationId] => 9
)
[Property Two] => Array
(
[Property] => Ledge
[PropertyId] => 1197
[LocationId] => 10
)
)
我的数组包含每个“属性”的更多信息。再过一些信息,请问。
谢谢C
答案 0 :(得分:2)
$RoomCode = 117;
$foundProperties = array_filter($_SESSION['PROPERTY_ARR'], create_function('$r', 'return $r["PropertyId"] == '.$RoomCode.';'));
答案 1 :(得分:1)
如果您已经在注释中测试了解决方案,那么在PHP文档中搜索array_search(http://php.net/manual/en/function.array-search.php)和in_array(http://)中的多维数组php.net/manual/en/function.in-array.php),也许你应该考虑为你的阵列更好的格式化。 告诉我,如果我错了,但看起来PropertyId是每个属性的唯一标识符。如果此数组由属性id索引,则搜索数组ID会更容易,更快捷。 如果我修改你的样本数组,你会有这样的东西:
Array
(
[117] => Array
(
[Property] => Bolt Hole
[LocationId] => 9
)
[1197] => Array
(
[Property] => Ledge
[LocationId] => 10
)
)
然后,你不需要搜索它,如果你想要属性117,你只需使用:
$_SESSION['PROPERTY_ARR'][117]
答案 2 :(得分:0)
我尝试了最好最简单的解决方案,请看看
$arr_prop =array
(
'Property One' => array
(
'Property' => 'Bolt Hole',
'PropertyId' => 117,
'LocationId' => 9
),
'Property Two' => array
(
'Property' => 'Ledge',
'PropertyId' => 1197,
'LocationId' => 10
)
);
//echo "<pre>";
//print_r($arr_prop);
$r =117;
$output=array();
foreach($arr_prop as $key=>$value)
{
//echo "<pre>";
//var_dump($value);
if(is_array($value))
{
//echo __LINE__;
if(in_array($r,$value))
$output = $value;
}
}
echo "<pre>";
print_r($output);