我有一堆用户,每个用户都有描述,我想将这些描述添加到数组中。然后我想读取数组,拆分每个描述,并将结果设置为变量。示例说明如下:
italian, mexican
或french, 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>
答案 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>
...