如何添加到数组然后输出项?

时间:2017-04-10 23:02:47

标签: php arrays string explode

我有一堆用户,每个用户都有描述,我想将这些描述添加到数组中。然后我想读取数组,拆分每个描述,并将结果设置为变量。示例说明如下:

italian, mexicanfrench, american

这就是我目前正在做的事情:

<?php
    $stack = array();
    $blogusers = get_users( 'orderby=nicename&role=author' );
    foreach ( $blogusers as $user ) {
        array_push($stack, $user->user_description );
    }
    $out = array_map('trim', explode(',', $stack));
?>

然后我做

<ul>
    <li><?php echo $out[0]; ?></li> 
    <li><?php echo $out[1]; ?></li> 
    <li><?php echo $out[2]; ?></li> 
    <li><?php echo $out[3]; ?></li> 
</ul>

但是我得到一个没有结果值的列表

      
  •   

更新

尝试

$stack = array();
$blogusers = get_users( 'orderby=nicename&role=author' );
foreach ( $blogusers as $user ) {
    $users = array_map('trim', explode(',', $user->user_description) );
    array_push($stack, $users);
}

然后

<li><?php echo $stack[0]; ?></li> 
<li><?php echo $stack[1]; ?></li> 
<li><?php echo $stack[2]; ?></li>

2 个答案:

答案 0 :(得分:3)

只需展开每个描述,然后将爆炸返回的每个元素推送到数组中。这假设您不关心重复。

$stack = array();
$blogusers = get_users( 'orderby=nicename&role=author' );
foreach ( $blogusers as $user ) {
    $descTokens = explode(',', $user->user_description);
    $stack = array_merge($stack, $descTokens);
}

<li><?php echo $stack[0]; ?></li> 
<li><?php echo $stack[1]; ?></li> 
<li><?php echo $stack[2]; ?></li>

答案 1 :(得分:2)

如果你在循环结束后查看$stack,你会得到与此类似的东西:

<?php
$stack = [
    "italian, mexican",
    "french, american",
    "canadian, irish",
];

如果你通过爆炸运行它,你就不会得到任何东西,因为你传递了一个数组。实际上,如果您设置了正确的错误报告,则会收到有关传递数组而不是字符串的警告。我想你想做的是:

<?php
    $blogusers = get_users( 'orderby=nicename&role=author' );
    foreach ( $blogusers as $user ) {
        $out[] = $user->user_description;
    }
?>
<li><?=$out[0]?></li> 
<li><?=$out[1]?></li> 
<li><?=$out[2]?></li>
...

如果你真的需要在单独的变量中使用它,你可以explode()它,但你不能输出一个数组到页面:

<?php
    $blogusers = get_users( 'orderby=nicename&role=author' );
    foreach ( $blogusers as $user ) {
        $out[] = explode(",", $user->user_description);
    }
?>
<li><?=$out[0][0]?></li> 
<li><?=$out[0][1]?></li> 
<li><?=$out[1][0]?></li>
<li><?=$out[1][1]?></li>
...