我有以下主要数组$m
Array
(
[0] => Array
(
[home] => Home
)
[1] => Array
(
[contact_us] => Contact Us
)
[2] => Array
(
[about_us] => About Us
)
[3] => Array
(
[feedback_form] => Feedback Form
)
[4] => Array
(
[enquiry_form] => Products
)
[5] => Array
(
[gallery] => Gallery
)
)
我有值存储$ options的数组中的home,contact_us,我需要使用$ options数组从主数组中获取$ m的值
例如。如果$ options数组的值为home,我需要从主数组中获取值Home($ m)
我的代码如下所示
$c = 0;
foreach($options as $o){
echo $m[$c][$o];
++$c;
}
我以某种方式无法从主数组中接收值?
答案 0 :(得分:22)
我首先将$m
转换为只有一个级别的简单数组:
$new_m = array();
foreach ($m as $item) {
foreach ($item as $key => $value) {
$new_m[$key] = $value;
}
}
然后你可以使用:
foreach ($options as $o) {
echo $new_m[$o];
}
答案 1 :(得分:2)
试试这个:
foreach($options as $o){
foreach($m as $check){
if(isset($check[$o])) echo $check[$o];
}
}
尽管让数组填充唯一的页面而不是多维数组会更好
答案 2 :(得分:1)
假设子阵列中的键是唯一的,您可以
示例如下:
$options = array('about_us', 'enquiry_form');
$values = array_intersect_key(
call_user_func_array('array_merge', $m), // Merge all subarrays
array_flip($options) // Make values in options keys
);
print_r($values);
导致:
Array
(
[about_us] => About Us
[enquiry_form] => Products
)
答案 3 :(得分:0)
这是怎么回事?
foreach( $options as $option )
{
foreach( $m as $m_key => $m_value )
{
if( $option == $m_key )
{
echo 'Name for ' . $options . ' is ' . $m_value;
break;
}
}
}
答案 4 :(得分:0)
你确定options数组的顺序是$ m吗?也许你是你的
echo $m[$c][$o];
正在解析为$ m [0] ['gallery'],这显然是空的。
你可以尝试不同的解决方案,对我来说,一个不错的解决方案(也许效率不高)应该是这样的:
for($c=0, $limit=count($c); $c < $limit; $c++)
if (array_search(key($m[$c]), $options))
echo current($m[$c]);
如果你想使用你的方法必须用这样的东西压扁你的阵列:
foreach ($m as $o)
$flattenedArray[key($o)]=current($o);
foreach ($options as $o)
echo $flattenedArray($o);
但是,如果存在重复的话,这样可以消除原始数组的重复声音。
答案 5 :(得分:0)
尝试使用递归array_walk函数,例如
$a = array(
array('ooo'=>'yeah'),
array('bbb'=>'man')
);
function get_array_values($item, $key){
if(!is_numeric($key)){
echo "$item\n";
}
}
array_walk_recursive($a,'get_array_values');
答案 6 :(得分:0)
$trails1 = array();
foreach ($trails as $item) {
foreach ($item as $key => $value) {
$trails1[].= $value;
}
}
echo '<pre>';print_r($trails1);
exit;