如何从这个数组中获取$userid和$username的所有值
a:1:{s:2:"cc";a:2:{i:4;s:4:"koko";i:8;s:4:"soso";}}
我的代码只打印最后一个字符串,我想将所有值作为数组,并在循环上打印所有值
$touser = array();
$sql = $db->query_read("SELECT touserarray FROM " . TABLE_PREFIX . " pmtext where pmtextid = 147 ");
while ($sql1 = $db->fetch_array($sql))
{
$touser = unserialize($sql1['touserarray']);
foreach($touser AS $key => $item)
{
if (is_array($item))
{
foreach($item AS $subkey => $subitem)
{
$username = $subitem;
$userid = $subkey;
}
}
else
{
$username = $item;
$userid = $key[$i];
}
}
}
echo $username .'<br />'. $userid ;
当我打印$username和$userid时仅打印姓氏和最后id//输出用户名:soso
userid:8
如果你想打印或存储数据,你需要为它创建一个新的数据结构。如果你只想打印数据,你必须在设置$username
和$userid
的循环中完成;否则,每次运行循环时都会覆盖这些值。
# create an array for storing user names and IDs.
$user_arr = array();
foreach($touser as $key => $item)
{
if (is_array($item))
{
foreach($item AS $subkey => $subitem)
{
$username = $subitem;
$userid = $subkey;
}
}
else
{
$username = $item;
$userid = $key[$i];
}
# store the data as $user_arr[$id] = $name
$user_arr[$userid] = $username;
# or if you just want to print off the data during the loop...
echo "ID: $userid; name: $username" . PHP_EOL;
}
foreach ($user_arr as $k => $v) {
echo "id: $k; name: $v" . PHP_EOL;
}
输出:
id: 4; name: koko
id: 8; name: soso
您不会在任何地方保存值,因此userid
和username
每次都会覆盖。试试这个:
<?php
$touser = array();
$sql = $db->query_read("SELECT touserarray FROM " . TABLE_PREFIX . " pmtext
where pmtextid = 147 ");
while ($sql1 = $db->fetch_array($sql)) {
$touser = unserialize($sql1['touserarray']);
foreach($touser AS $key => $item) {
if (is_array($item)) {
foreach($item AS $subkey => $subitem) {
$username = $subitem;
$userid = $subkey;
echo $userid . '/' . $username;
}
}
else {
$username = $item;
$userid = $key;
echo $userid . '/' . $username;
}
}
}
?>
您的序列化数组的形式如下:
array(1) {
'cc' =>
array(2) {
[4] =>
string(4) "koko"
[8] =>
string(4) "soso"
}
}
您需要再迭代一次("cc"键的itemCC):
foreach ($touser as $itemCC) {
foreach ($itemCC AS $key => $item) {
if (is_array($item)) {
foreach ($item AS $subkey => $subitem) {
$username = $subitem;
$userid = $subkey;
}
} else {
$username = $item;
$userid = $key;
}
$result[$userid] = $username;
}
}
// print result
foreach ($result as $userId => $username) {
echo $userId . " " . $username . "<br />'n";
}
例如,$result变量是一个数组,其形式为userid=>$username。