如何使用php在循环中读取部分数组数据

时间:2015-02-19 09:05:09

标签: php

我有以下数组。

Array (
    [group] => 2 
    [group_com] => 2764800 
    [group_dom] => 1423296000 
    [user0] => user2013 
    [login0] => 1394481064 
    [logoff0] => 1394481112 
    [duration0] => 45 
    [user1] => user2014 
    [login1] => 1394481064 
    [logoff1] => 1394481112 
    [duration1] => 320 
    [user2] => user2015 
    [login2] => 1394481064 
    [logoff2] => 394481112 
    [duration2] => 120 
) 

['group']['group_com']['group_dom']个键是数组中的单个键,我可以使用下面的代码读取[group]个键数据。

$group=$result['group'];
$loginstart=$result['group_com'];
$loginend_tip=$result['group_dom'];

但是[user0][user1][user2]键可以在数组中更少或更多。那么如何才能获得所有[user]密钥'使用循环值?循环仅用于[user]键,而不用于[group]键。或者还有另一种方法可以做到这一点。请提供一些指导。

谢谢,

3 个答案:

答案 0 :(得分:1)

您必须遍历所有数组并过滤您的需求,如下所示:

foreach($myArray as $key=>$value){
    if(substr($key,0,4)!=='user'){
        continue;
    }else{
        //Here you have keys that start with 'user' only
    }
}

请注意,else{}部分不需要if,因为只有当语句因为继续而被执行时才会被执行,但是它更像是可读的。

如果您经常被要求做这种事情,有时候在团体上,有时在用户身上,您可以使用多维数组来简化您的工作。

在我看来,你最好使用这样的数组:

Array (
    [group] => 2 
    [group_com] => 2764800 
    [group_dom] => 1423296000 
    [users] => array (
        array(
            [user]=>user2013
            [login]=>user2013 
            [logoff]=>user2013 
            [duration]=>user2013
        )
        array(
            [user] => user2014 
            [login] => 1394481064 
            [logoff] => 1394481112 
            [duration] => 320 
        )
    ) 
)

通过这种方式,您可以轻松地在$ array ['users']上循环,以获得关于每个用户的数据,而不需要使用字符串键的增量进行硬体操。

答案 1 :(得分:0)

过滤数组键以获取用户数组:

$users = array_filter(array_keys($yourArray), function($key) {
    return substr($key,0,4)=="user";
});
$users = array_values($users);
var_dump($users);

答案 2 :(得分:-1)

如果你这样做

$group=$result['group'];
array_shift($result);
$loginstart=$result['group_com'];
array_shift($result);
$loginend_tip=$result['group_dom'];
array_shift($result);

现在在$result,您将只拥有用户变量。您可以每4次循环它并将其存储在另一个数组中

$users = array();
for($i=0;$i<count($result);$i+4) {
    $user = $result["user".$i];
    $login = $result["login".$i + 1];
    $logoff = $result["logoff".$i + 2];
    $duration = $result["duration".$i + 3];
    $users[] = array($user, $login, $logoff, $duration);
}