我正在开发一个小型的"用户列表"系统,我需要foreach三个数组。以下是我"想做的事":
<?php
$users = array("user1", "user2");
$descriptions = array("user1 description", "user2 description");
$socials = array("skype: user1", "skype: user2");
foreach ($users as $user && $description as $description && $socials as $social) {
echo "<tr><td style='"width:60px'"><img width='"50'" height='"50'" alt='"{$user}'s profile picture'" src='"blog/users/{$user}/avatar.png'"><br/>{$user}</td><td style='"width:70%'">{$descriptions}</td><td style='"text-align:left'">{$social}</td></tr>}";}
?>
我该怎么做?
您可以将array_map与null一起使用。首先,您可以从这三个参数中构建一个多维数组,然后使用foreach 遍历它
$combined = array_map(null, $users, $descriptions, $socials);
foreach ($combined as $user) {
$username = $user[0];
$description = $user[1];
$social = $user[2];
echo "<tr><td style='"width:60px'"><img width='"50'" height='"50'" alt='"{$username}'s profile picture'" src='"blog/users/{$username}/avatar.png'"><br/>{$username}</td><td style='"width:70%'">{$description}</td><td style='"text-align:left'">{$social}</td></tr>}";
}
$users = array("user1", "user2");
$descriptions = array("user1 description", "user2 description");
$socials = array("skype: user1", "skype: user2"); $i = 0;
foreach ($users as $user)
{
$html .= "{$user}{$descriptions[$i]}{$socials[$i]}";
$i++;
}
运行for循环,一次遍历所有3个数组。
for ($i = 0; $i < count($users); $i++)
{
echo $users[$i].'<br />'; //get location $i of array $users
echo $descriptions[$i].'<br />'; //get location $i of array $descriptions
echo $socials[$i].'<br />'; //get location $i of array $socials
}
您可以使用foreach
中的key
来调用另一个数组(假设它们匹配):
<?php
$users = array("user1", "user2");
$descriptions = array("user1 description", "user2 description");
$socials = array("skype: user1", "skype: user2");
foreach ($users as $key=>$user) {
echo "<tr><td style='"width:60px'"><img width='"50'" height='"50'" alt='"{$user}'s profile picture'" src='"blog/users/{$user}/avatar.png'"><br/>{$user}</td><td style='"width:70%'">{$descriptions[$key]}</td><td style='"text-align:left'">{$social[$key]}</td></tr>}";}
另外,不建议在一个echo
中有这么多行代码。我更喜欢heredoc
方法,它将所有内容"分解",这样您就可以直观地阅读(并进行更改):
foreach ($users as $key=>$user) {
echo <<<EOD
<tr>
<td style="width:60px"><img width="50" height="50" alt="{$user}'s profile picture" src="blog/users/{$user}/avatar.png"><br>{$user}</td>
<td style="width:70%">{$descriptions[$key]}</td>
<td style="text-align:left">{$social[$key]}</td>
</tr>
EOD;
}