PHP数组:按索引获取值,其中
我有一个PHP数组:PHP数组:按索引获取值,其中,php,arrays,Php,Arrays,我有一个PHP数组: $statuses = array( 'delivery-ongoing' => array("status" => "at-10", "traffic" => "FCL", "type" => "export"), 'delivered' => array("status" => "at-13", "traffic" => "FCL", "type" => "export"), 'delivery-ongoing
$statuses = array(
'delivery-ongoing' => array("status" => "at-10", "traffic" => "FCL", "type" => "export"),
'delivered' => array("status" => "at-13", "traffic" => "FCL", "type" => "export"),
'delivery-ongoing' => array("status" => "00--00", "traffic" => "FCL", "type" => "import"),
'return-to-ongoing' => array("status" => "to-04", "traffic" => "FCL", "type" => "import"),
'delivered' => array("status" => "at-13", "traffic" => "FCL", "type" => "import")
);
我必须按键“正在交付”选择状态,其中type=“导入”
我可以使用数组结构,因为它在我的类中是一个常量
我试过了
$statuses['delivery-ongoing']['status']
如何获得type=“import”的正确状态
是否有某种循环我必须做,或者有另一种方法来做?您可以使用
此外,正如评论中所建议的,您可以重新命名密钥,可能是在状态后附加一个ID
情商:
你可以用
此外,正如评论中所建议的,您可以重新命名密钥,可能是在状态后附加一个ID
情商:
此阵列存在几个问题: 1-在这一行中过早关闭的括号中有一个错误:
'return-to-ongoing' => array("status" => "to-04", "traffic" => "FCL"), "type" => "import",
2-如果在同一数组上定义同一个键两次,将无法访问使用该键定义的第一个元素。如果使用调试器,您将看到数组中只有3个元素可用,因为有多个元素共享同一个键,并且只保存最后一个
但要获得所需的值,可以使用以下循环:
foreach ($statuses as $key => $value) {
if($key == 'delivery-ongoing' && $value['type'] == 'import'){
$result = $value['status'];
break;
}
}
循环结束后,类型导入的状态为$result。此数组有几个问题: 1-在这一行中过早关闭的括号中有一个错误:
'return-to-ongoing' => array("status" => "to-04", "traffic" => "FCL"), "type" => "import",
2-如果在同一数组上定义同一个键两次,将无法访问使用该键定义的第一个元素。如果使用调试器,您将看到数组中只有3个元素可用,因为有多个元素共享同一个键,并且只保存最后一个
但要获得所需的值,可以使用以下循环:
foreach ($statuses as $key => $value) {
if($key == 'delivery-ongoing' && $value['type'] == 'import'){
$result = $value['status'];
break;
}
}
循环结束后,类型导入的状态在$result处可用。您的$status必须具有以下结构:
$statuses = array(
'delivery-ongoing' => array(
array("status" => "at-10", "traffic" => "FCL", "type" => "export"),
array("status" => "00--00", "traffic" => "FCL", "type" => "import")
),
'delivered' => array(
array("status" => "at-13", "traffic" => "FCL", "type" => "export"),
array("status" => "at-13", "traffic" => "FCL", "type" => "import")
),
'return-to-ongoing' => array(array("status" => "to-04", "traffic" => "FCL", "type" => "import")),
);
现在,您可以通过执行以下操作来做您想做的事情:
function filter_by_value ($array, $index, $value){
if(is_array($array) && count($array)>0)
{
foreach(array_keys($array) as $key){
$temp[$key] = $array[$key][$index];
if ($temp[$key] == $value){
$newarray[$key] = $array[$key];
}
}
}
return $newarray;
}
$imported = filter_by_value($statuses['delivery-ongoing'], 'type', 'import');
print_r($imported);
您的$状态必须具有以下结构:
$statuses = array(
'delivery-ongoing' => array(
array("status" => "at-10", "traffic" => "FCL", "type" => "export"),
array("status" => "00--00", "traffic" => "FCL", "type" => "import")
),
'delivered' => array(
array("status" => "at-13", "traffic" => "FCL", "type" => "export"),
array("status" => "at-13", "traffic" => "FCL", "type" => "import")
),
'return-to-ongoing' => array(array("status" => "to-04", "traffic" => "FCL", "type" => "import")),
);
现在,您可以通过执行以下操作来做您想做的事情:
function filter_by_value ($array, $index, $value){
if(is_array($array) && count($array)>0)
{
foreach(array_keys($array) as $key){
$temp[$key] = $array[$key][$index];
if ($temp[$key] == $value){
$newarray[$key] = $array[$key];
}
}
}
return $newarray;
}
$imported = filter_by_value($statuses['delivery-ongoing'], 'type', 'import');
print_r($imported);
使用foreach循环,然后在$value['type']字段中使用if语句考虑重新构造数组。数组中不能有两个相同的键。钥匙
正在传送
出现两次。@Janne Klouman:这是我的问题。我知道。这就是为什么我有与众不同的类型。或者我可以这样做:delivery Continuous import和delivery Continuous exportYou不应该多次使用同一个键,因为“如果数组声明中的多个元素使用同一个键,那么在覆盖所有其他元素时,将只使用最后一个键。”表单。使用foreach循环,然后如果语句$value['type']请考虑重新构造阵列。数组中不能有两个相同的键。钥匙正在传送
出现两次。@Janne Klouman:这是我的问题。我知道。这就是为什么我有与众不同的类型。或者我可以这样做:delivery Continuous import和delivery Continuous exportYou不应该多次使用同一个键,因为“如果数组声明中的多个元素使用同一个键,那么只有最后一个元素会被使用,因为所有其他元素都会被覆盖。”数组过滤器标志是在PHP版本5.6+中引入的,我将把我的密钥重命名为唯一的。感谢PHP版本5.6+中引入了数组过滤器标志,我将把我的密钥重命名为唯一的。谢谢那是个打字错误。谢谢。那是个打字错误。谢谢。那很有用。谢谢。那很有用。谢谢