在保留关键点的情况下,将关联阵列插入另一个关联阵列


Insert an associative array into another associative array, maintaining keys

下面是我的函数及其输出。

$results = mysql_query("SELECT * FROM tmsessions WHERE session_user_id ='".$_SESSION['user_id']."'");
    $count = mysql_num_rows($results);
    $username = mysql_fetch_assoc(mysql_query("SELECT user_fname FROM tmusers WHERE user_id = '".$_SESSION['user_id']."'"));
    $json_data = array( 'userID'=>$_SESSION['user_id'], 'userName'=>$username['user_fname'], 'total'=>$count );
    while($session = mysql_fetch_assoc($results))
    {
        $numListItems = mysql_num_rows(mysql_query("SELECT session_id, listing_unique_id FROM tmdata WHERE session_id = '".$session['session_id']."'"));
        $listItems = array('sessionID'=>$session['session_id'],
                           'sessionName'=>$session['session_name'],
                           'sessionCount'=>$numListItems,
                           'sessionDC'=>date('h:iA - M m y',strtotime($session['session_date_created'])),
                           'sessionDM'=>date('h:iA - M m y',strtotime($session['session_date_modified'])),
                           'sessionActive'=>$session['session_active']);
        array_push($json_data, $listItems);
    }
    return json_encode($json_data);

哪个出局:

{"0":
{"sessionID":"9",
 "sessionName":"dataName0",
 "sessionCount":100,
 "sessionDC":"12:11AM - Jun 06 11",
 "sessionDM":"01:00AM - Jan 01 70",
 "sessionActive":"1"},
 "1":
{"sessionID":"10",
 "sessionName":"dataName1",
 "sessionCount":100,
 "sessionDC":"05:04PM - Jun 06 11",
 "sessionDM":"01:00AM - Jan 01 70",
 "sessionActive":"1"},
 "userID":"1",
 "userName":"Ezra",
 "total":2}

我需要"0":和"1":位成为每个新关联数组的"listItem":,但我不知道如何正确操作数组以获得:(.

在PHP中,索引数组和关联数组被处理为相同的类型(即矩阵或一维数组,a[0],a[1],…a[N],vs a['one'],a['wo'],…a['something'])。

使用array_push()时,您不是在创建或添加关联哈希,而是在数组末尾添加索引值。

不使用array_push()函数,您可以使用自己选择的名称进行直接赋值,例如

$listItems[$session['session_id']] = array('sessionID'=>$session['session_id'],
                           'sessionName'=>$session['session_name'],
                           'sessionCount'=>$numListItems,
                           'sessionDC'=>date('h:iA - M m y',strtotime($session['session_date_created'])),
                           'sessionDM'=>date('h:iA - M m y',strtotime($session['session_date_modified'])),
                           'sessionActive'=>$session['session_active']);

如果我正确理解你的问题,试试这个,否则会帮助你,对不起,告诉我我理解错了什么?

$results = mysql_query("SELECT * FROM tmsessions WHERE session_user_id ='".$_SESSION['user_id']."'");
$count = mysql_num_rows($results);
$username = mysql_fetch_assoc(mysql_query("SELECT user_fname FROM tmusers WHERE user_id = '".$_SESSION['user_id']."'"));
$json_data = array( 'userID'=>$_SESSION['user_id'], 'userName'=>$username['user_fname'], 'total'=>$count );
while($session = mysql_fetch_assoc($results))
{
    $numListItems = mysql_num_rows(mysql_query("SELECT session_id, listing_unique_id FROM tmdata WHERE session_id = '".$session['session_id']."'"));
    $listItems = array('sessionID'=>$session['session_id'],
                       'sessionName'=>$session['session_name'],
                       'sessionCount'=>$numListItems,
                       'sessionDC'=>date('h:iA - M m y',strtotime($session['session_date_created'])),
                       'sessionDM'=>date('h:iA - M m y',strtotime($session['session_date_modified'])),
                       'sessionActive'=>$session['session_active']);
    $json_data['listItem'][] = $listItems;
}
return json_encode($json_data);