我正在处理一个数组,我希望得到数组的两个值之间的所有数组,例如
df$c <- ifelse(df$a < 4, 'yes', 'no')
df$d <- ifelse(df$a < 4, df$b*2, df$b)
所以给定$fields = array(
'a' => array(
'name' => 'username',
'type' => 'text',
),
'b' => array(
'name' => 'birthday',
'type' => 'text',
),
'c' => array(
'name' => 'address',
'type' => 'text',
),
'd' => array(
'name' => 'password',
'type' => 'text',
),
);
和username
我希望得到以下内容
password
只是因为它出现在带有username值的数组之后,而且数组之前的值为password
由于
答案 0 :(得分:1)
只需使用以下两个条件循环
$start = "username";
$end = "password";
$new = array();
$flag = false;
foreach($fields as $key=>$value){
if($value["name"] == $start){
$flag = true;
continue;
}
if($value["name"] == $end){
break;;
}
if($flag){
$new[$key] = $value;
}
}
print_r($new);
答案 1 :(得分:0)
您可以将name
值提取到数组中,使用搜索结果位置搜索并切片:
$names = array_column($fields, 'name');
$result = array_slice($fields, $i=array_search('username', $names)+1,
array_search('password', $names)-$i);
答案 2 :(得分:0)
function getArraysBetweenNames($name1, $name2, $array)
{
$return = [];
$foundName1 = false;
foreach ($array as $key => $item) {
if ($foundName1) {
if ($item["name"] == $name2)
break;
$return[$key] = $item;
} elseif ($item["name"] == $name1) {
$foundName1 = true;
}
}
return $return;
}
print_r(getArraysBetweenNames("username", "password", $fields));
答案 3 :(得分:-1)
$fields = array(
'a' => array(
'name' => 'username',
'type' => 'text',
),
'b' => array(
'name' => 'birthday',
'type' => 'text',
),
'c' => array(
'name' => 'address',
'type' => 'text',
),
'd' => array(
'name' => 'password',
'type' => 'text',
),
);
如果你想要来自
字段的b,c数组echo $fields[b][name];
echo $fields[b][type];
echo $fields[c][name];
echo $fields[c][type];