如果某人有电话号码(也可能没有),我正在查询服务。我有一个json字符串(作为返回值),如下所示:
$json = '{"data":[{"tel1":"1102"},{"tel2":"3220"}],"found":true}';
我将此字符串转换为json_decode()
函数。
$jd = json_decode($json);
然后我想把电话号码只输入一个没有按键的数组。
if($jd->found) {
$o2a = get_object_vars($json);
}
var_dump($o2a);
当我想查看$o2a
与var_dump()
函数有关的内容时,我会得到以下内容:
array (size=2)
'data' =>
array (size=2)
0 =>
object(stdClass)[2]
public 'tel1' => string '1219' (length=4)
1 =>
object(stdClass)[3]
public 'tel2' => string '2710' (length=4)
'found' => boolean true
我想在最后只将电话号码放到一个数组中,如:
$phones = array('1219', '2710');
让我停止这样做的原因是我不知道有多少电话号码。 Json数组可以包含更多或更少的元素。
$possibleJson1 = '{"data":[],"found":false}'; //no phone number found
$possibleJson2 = '{"data":[{"tel1":"1102"},{"tel2":"3220"},{"tel3":"1112"},{"tel4":"3230"}],"found":true}'; //4 phone numbers found
它可能会变化0
- 到 - n
,所以如果它是一个常数,我可以在循环中创建该数组。
答案 0 :(得分:2)
将其转换为数组,然后您应该能够轻松地迭代它
-------------------
----- name -------
-------------------
-- boy Active --
-- ball In Active--
-------------------
答案 1 :(得分:2)
一些没有任何代码的函数:)
$json = '{"data":[{"tel1":"1102"},{"tel2":"3220"}],"found":true}';
$vals = array_values(array_reduce(json_decode($json, true)['data'], 'array_merge',[]));
var_dump($vals);
答案 2 :(得分:1)
json_decode
函数的第二个参数,以便它返回一个数组。data
和found
密钥。array_values
$jd = json_decode($json, true);
if(isset($jd['data']) && isset($jd['found'])){
$telArr = $jd['data'];
$phones = array();
foreach($telArr as $tel){
$value = array_values($tel);
$phones[] = $value[0];
}
var_dump($phones);
}
输出:
array(2) {
[0]=>
string(4) "1102"
[1]=>
string(4) "3220"
}
答案 3 :(得分:0)
好吧,我会尝试这样的事情:
$json = '{"data":[{"tel1":"1102"},{"tel2":"3220"}],"found":true}';
$jd = json_decode($json);
$phones = [];
if ($jd->found && count($jd->data)) {
foreach ($jd->data as $key -> $value) {
$phones[] = $value;
}
}
答案 4 :(得分:0)
尝试使用in_array
和简单foreach
循环
$json = '{"data":[{"tel1":"1102"},{"tel2":"3220"}],"found":true}';
$arr = json_decode($json, true);
$result = array();
if (in_array(true, $arr)) {
foreach ($arr['data'] as $key => $value) {
foreach($value as $k => $v)
$result[] = $v;
}
}
print_r($result);