我有这个数组
Array
(
[name] => Step1 is here
[standard] => Array
(
[product_id] => 85,99
[product_name] => Step1 is here
[product_price] => 976.0000
[product_description] => :something
[product_image] => http://someurl.com/shop_pos/image/data/13D.png
)
[professional] => Array
(
[product_id] => 61
[product_name] => Step1 is here
[product_price] => 289.0000
[product_description] => somethingothere
[product_image] => http://someurl.com/shop_pos/image/data/13B.png
)
[premium] => Array
(
[product_id] => 677
[product_name] => Step1 is here
[product_price] => 289.0000
[product_description] => somethingothere
[product_image] => http://someurl.com/shop_pos/image/data/13A.png
)
)
是否可以按照我需要的正确顺序轻松引用。所以我需要的订单是标准的,专业的,高级的......所以,如果一个人不在场,我可以这样做吗
if (!isset($my_array['standard'])) {
$use_me = $my_array['standard']
}elseif(!isset($my_array['professional'])) {
$use_me = $my_array['professional']
}elseif(!isset($my_array['professional'])) {
$use_me = $my_array['premium']}
}
我有上面的代码,我认为可能有用,但有更好的方法
答案 0 :(得分:2)
应该这样做:
$keys = array_slice(array_keys($my_array), 1, 1);
$use_me = $my_array[$keys[0]];
简而言之:
array_keys
)name
,因此返回standard
或第二个密钥是什么)。 (array_slice
)$my_array
并将其存储在$use_me
。答案 1 :(得分:1)
是的,您可以按照代码中的方式进行操作。但是,if语句逻辑不正确。你的代码应该是这样的:
if (isset($my_array['standard'])) {
$use_me = $my_array['standard'];
} elseif(isset($my_array['professional'])) {
$use_me = $my_array['professional'];
} elseif(isset($my_array['premium'])) {
$use_me = $my_array['premium'];
}
答案 2 :(得分:1)
如果我理解你想要做什么,并且如果不保证键的顺序与示例中的顺序完全相同,那么你可以这样做:
// initialization
$use_me = 'default value';
// go through each package
foreach (array('standard', 'professional', 'premium') as $package) {
// when we find a package that does exist
if (isset($my_array[$package])) {
// mark it as found and exit the loop
$use_me = $package;
break;
}
}
这将遍历所有包并将$use_me
变量设置为第一个找到的值。如果未找到任何值,则将其设置为默认值。
答案 3 :(得分:1)
foreach($input as $k=>$v) {
if (array_key_exists('standard', $k)) {
$output [$k] = $k;
}
if (array_key_exists('professional', $k)) {
$output [$k] = $k;
}
if (array_key_exists('premium', $k)) {
$output [$k] = $k;
}
}
或者你可以通过 array-intersect-key
答案 4 :(得分:1)
我会这样做:
foreach (array('standard', 'professional', 'premium') as $name) {
if (isset($my_array[$name])) {
$use_me = $my_array[$name];
break;
}
}
或更结构化:
function selectPlan($array) {
foreach (array('standard', 'professional', 'premium') as $name) {
if (isset($array[$name])) return $array[$name];
}
}
$use_me = selectPlan($my_array);