获取数组的两个值之间的数组

时间:2017-10-12 18:10:11

标签: php arrays

我正在处理一个数组,我希望得到数组的两个值之间的所有数组,例如

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

由于

4 个答案:

答案 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);

现场演示:https://eval.in/879235

答案 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];