2015-01-23 5 views
-1

Я пытаюсь объединить строку и массив с JSON. Пока нет успеха.Объединить строку и массив с JSON

Вот PHP код:

<?php 
$url = ‘example.com’; 
$data = file_get_contents($url); 
$regex = '/list-animal-id">(.+?)</'; 
$input = ‘testtext'; 
preg_match_all($regex,$data, $match); 
    //var_dump($match); 
    //echo json_encode($match[1]); 
$json = array($input, $match[1]); 
$json_data = json_encode($json); 
echo $json_data; 

?> 

$ матч возвращается с массивом, например:

"22425229","22493325","22596308","24635614","22202322" 

выше только создает один экземпляр строки:

["testtext",["22425229","22493325","22596308"...... 

Я хочу создать что-то вроде этого:

"testtext":"22425229", "testtext":"22425230" 

Спасибо,

+1

У вас есть какие-то плохие кавычки, которые вызывают синтаксис ошибки. С чем вы это редактируете? –

+0

редактор через терминал – magicJerk

ответ

0

мое решение было неправильным и не должно остаться здесь путая других ... правильное решение можно найти в Jims answere ...

+0

Спасибо за ответ, я не мог заставить это работать, скорее всего, ошибку оператора. :) – magicJerk

+0

ok ... вам все еще нужен оригинальный код, включая функцию «preg_match_all» ... – bohrsty

+0

@bohrsty, это никогда не сработает. Как я писал в своем ответе, вы не можете иметь массив или объект в PHP или JavaScript с тем же ключом, который повторяется многократно. Он просто перезапишет значение этой ключевой записи, пока не дойдет до последней записи с этим конкретным ключом. Вывод всегда будет '{" testtext ":" 22202322 "}' ("testtext" с последним значением). Попробуйте ответить с кодом @ magicJerk, чтобы увидеть результат. – Jim

1

То, что вы хотите сделать, это не возможное. [ "testtext":"22425229", "testtext":"22425230" ] принимает массив, в котором каждый ключ является «тестовым текстом». У вас не может быть массив или объект с одним и тем же ключом.

Что вы можете сделать, это создать массив массивов, где каждый элемент является ассоциативным массивом (объект в JSON):

<?php 
$url = 'example.com'; 
$data = file_get_contents($url); 
$regex = '/list-animal-id">(.+?)</'; 
$input = 'testtext'; 
preg_match_all($regex,$data, $match); 
    //var_dump($match); 
    //echo json_encode($match[1]); 

function outputArray($value) { 
    global $input; 
    return array($input => $value); 
} 

$json = array_map('outputArray', $match); 
$json_data = json_encode($json); 
echo $json_data; 

?> 

Выход: [{"testtext":"22425229"},{"testtext":"22493325"},{"testtext":"22596308"},{"testtext":"24635614"},{"testtext":"22202322"}]

+0

Спасибо Джим! работает хорошо. Так что, я думаю, мой отрыв от этого (я очень новичок в PHP) заключается в том, что тяжелый подъем нужно делать до json. – magicJerk

+0

Нет проблем. Рад, что смог помочь. – Jim