Array( [head] => Array ( [cmd] => 105 [appKey] => 53 [reqSerialNo] => [version] => [ctalkId] => 1 [seqNo] => 1 [seqCnt] => 1 [retCode] => 0 [retStr] => OK ) [respInfo] => Array ( [userInfos] => Array ( [0] => Array ( [userIdinfo] => Array ( [uuid] => 100000124 [type] => 0 [id] => 100000124 ) [userKeyInfos] => Array ( [1] => Array ( [value] => 100000124 [valueName] => sdkUserPriId [valueKeyType] => 1 [accessLvl] => 0 [reserveValue] => Array ( ) [reserve] => Array ( ) ) [2] => Array ( [value] => 張尼瑪 [valueName] => nickName [valueKeyType] => 2 [accessLvl] => 0 [reserveValue] => Array ( ) [reserve] => Array ( ) ) [3] => Array ( [value] => [ { "bigKey" : "", "bigUrl" : "group2/M00/00/05/wKgBC1TAV06BS21_AABoZKLBGRM281.png", "smallKey" : "", "smallUrl" : "group2/M00/00/05/wKgBC1TAV07RoHGEAAAXAgS_rVM330.png" }] [valueName] => head [valueKeyType] => 3 [accessLvl] => 0 [reserveValue] => Array ( ) [reserve] => Array ( ) ) [5] => Array ( [value] => 1 [valueName] => gender [valueKeyType] => 5 [accessLvl] => 0 [reserveValue] => Array ( ) [reserve] => Array ( ) ) [25] => Array ( [value] => 0 [valueName] => lastUpdateTime [valueKeyType] => 25 [accessLvl] => 0 [reserveValue] => Array ( ) [reserve] => Array ( ) ) [71] => Array ( [value] => 2 [valueName] => servercode [valueKeyType] => 71 [accessLvl] => 0 [reserveValue] => Array ( ) [reserve] => Array ( ) ) ) [userInfoReserve] => Array ( ) ) ) ))
這是數組列印出來的結果,在網上看到有把多維陣列轉化成一維數組的方法,但是這樣迴圈遍曆出來的結果只能通過下標來擷取資料了
function arr_foreach ($arr) { static $data; if (!is_array ($arr)) { return $data; } foreach ($arr as $key => $val ) { if (is_array ($val)) { arr_foreach ($val); } else { //$data[$key]=$val; $data[] = $val; } } return $data; } $res=arr_foreach($result ); print_r($res);
嘗試過在 $data[] = $val;裡面加上key但是擷取的資訊就不全了。$result返回來的可能是多條使用者資訊,列印只列印了單條出來,其他的結構都是一樣的。求幫忙
回複討論(解決方案)
求幫幫忙,發現一個問題,就是這個方法遍曆的時候,如果返回的是多個使用者的,它全都在一個array裡面顯示了,id跟著往下走的。
沒人嘛,技術大大呢。
你這是一個4維以上的數組,你打算做什麼呢?
按你樣本的代碼,輸出的是一維數組。需求是這樣嗎?
你這是一個4維以上的數組,你打算做什麼呢?
按你樣本的代碼,輸出的是一維數組。需求是這樣嗎?
嗯,就是轉化成一維之後發現如果使用者資料有多條的話,他的下標就會一直增加,沒辦法去迴圈遍曆了,我現在想做的就是查詢出10個使用者資料,然後擷取到使用者名稱字、區服、頭像、性別列表顯示出來。不知道怎麼來寫迴圈
你是要取 userKeyInfos 鍵下的內容嗎?
如果要代碼,請給出原始數組的 var_export 列印結果
你是要取 userKeyInfos 鍵下的內容嗎?
如果要代碼,請給出原始數組的 var_export 列印結果
$new_arr = array(); foreach ($result['respInfo']['userInfos'] as $k => $a) { foreach ($a['userKeyInfos'] as $v) { $new_arr[$k][$v['valueName']] = $v['value']; } } print_r($new_arr);
這個是搗騰出來遍曆的結果
Array( [0] => Array ( [sdkUserPriId] => 100000124 [nickName] => 張尼瑪 [head] => [ { "bigKey" : "", "bigUrl" : "group2/M00/00/05/wKgBC1TAV06BS21_AABoZKLBGRM281.png", "smallKey" : "", "smallUrl" : "group2/M00/00/05/wKgBC1TAV07RoHGEAAAXAgS_rVM330.png" }] [gender] => 1 [lastUpdateTime] => 0 [servercode] => 2 ) [1] => Array ( [sdkUserPriId] => 100000125 [nickName] => 100000125 [head] => [ { "bigKey" : "", "bigUrl" : "group1/M00/00/1D/wKgBeVUTdUCRpZD9AAF6ty8lLh4759.png", "smallKey" : "", "smallUrl" : "group1/M00/00/1D/wKgBeVUTdUDyBV08AAAKBhUiAA8391.png" }] [gender] => 0 [lastUpdateTime] => 0 [servercode] => )
現在的問題是head欄位裡面的頭像圖片怎麼取呢在我的foreach遍曆裡面加還是取出$new_arr再去遍曆呢,servercode這個是區服也是在遍曆裡面做迴圈嗎?
已經解決了。