我第一次发布在这里..
所以我是php,mysql和JSON的新手,我有一些问题,我可能只是以不正确的方式解决问题,所以让我知道你的想法。
基本上我有一个网站正在尝试做,有一些信息位于另一台服务器上,我用JSON获取该信息。
以下是代码:
//Start of JSON Main Content Fetch + Main Content Render
//JSON send_recv of menu array. Assign results to $main_content_b_render
$main_content_fetch=send_recv("menu", array("id" => "17", "fetchContent" => TRUE));
//Renders menu from JSON results.
function render_main_content($main_content_fetch)
{
//Start of processing $menu_result
$main_content_b_render = $main_content_fetch['content'];
print_r($main_content_fetch);
}
render_main_content($main_content_fetch['results']);
?>
我可以从其他服务器获得的内容如下:
Array ( [id] => 17 [name] => Accessories [reference] => [content] => Array ( [0] => Array ( [type] => Heading1 [content] => BLAH BLAH BLAH TXT TXT TXT [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accblurb ) [1] => Array ( [type] => Image [align] => Left [image] => http://URL.../image/43/webcontent/accshop11.jpg [thumb] => http://URL....com.au/image/thumb/100x100/43/webcontent/accshop11.jpg [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accshop1.jpg ) ) )
我可以将数组值分配给变量,但它只会分配第一个,例如:
如果我把它放在函数中并回显它 $ id = $ main_content_fetch ['content']; echo $ id;
所有我回来的是'阵列',我真正想要的是'BLAH BLAH BLAH TXT TXT TXT',它位于返回信息的后面,我们实际上所有位于最后一组括号中的......
([type] => Heading1 [content] => BLAH BLAH BLAH TXT TXT TXT [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accblurb )[1] =>数组([type] =>图像[align] =>左[image] => http://URL.../image/43/webcontent/accshop11.jpg [thumb] => http://URL....com.au/image/thumb/100x100/43/webcontent/accshop11.jpg [范围] => DetailAndThumb [有效] =&gt ; 1 [reference] => [name] => accshop1.jpg)
我想要做的是能够基本上分配我回到变量的所有内容。因为我觉得我能够轻松地选择我想要的东西......我不知道有什么其他方法可以做到:/
对不起,如果它有点模糊,不太擅长解释自己,但我希望有人可以锻炼我正在谈论和帮助。
答案 0 :(得分:1)
这是你的功能。我刚刚用return返回print_r
function render_main_content($main_content_fetch)
{
//Start of processing $menu_result
$main_content_b_render = $main_content_fetch['content'];
return $main_content_fetch;
}
让我们说你像这样调用这个函数。现在,您可以通过这种方式在单个变量中分配数组
$data = render_main_content($parameter);
$id = $data['id'];
$name = $data['name'];
......
希望这会对你有所帮助。您只需要为您希望的变量赋予索引的数组变量。
答案 1 :(得分:0)
您可以使用类似
的内容foreach (array_expression as $key => $value ) {
// TODO - probably need a recursive version
$$key = $value;
}
遍历数组时,该语句允许您在代码中创建新变量。
但是,作为一项规则,您永远不应该依赖从其他服务器获得的输出格式。我的建议是从输入中明确提取您需要的信息,而不是按原样提取并导入。
例如,你会做
$id = input['id'];
然后,您可以检查是否所有内容都已正确分配并捕获任何错误。
答案 2 :(得分:0)
你可以使用下面的PHP代码来解决这个问题
$ value){$$ key = $ value; } //要么.... foreach($ user as $ key => $ value){$ {$ key} = $ value; } ?>答案 3 :(得分:0)
如果我理解正确,为了获得BLA BLA BLA文本,您的代码应如下所示:
//Start of JSON Main Content Fetch + Main Content Render
//JSON send_recv of menu array. Assign results to $main_content_b_render
$main_content_fetch=send_recv("menu", array("id" => "17", "fetchContent" => TRUE));
//Renders menu from JSON results.
function render_main_content($main_content_fetch)
{
//Start of processing $menu_result
$main_content_b_render = $main_content_fetch['content'];
//return the second level "content"
return $main_content_b_render[0]['content'];
}
$content = render_main_content($main_content_fetch['results']);
print $content;
?>
答案 4 :(得分:-1)
首先使用print_r($ arr, TRUE )在调试时打印您的数组,这将对您有所帮助:-)(不要忘记TRUE标志!)。 您可以像访问的那样访问数组中的任何项目,但看起来您正在打印$ main_content_fetch而不是$ main_content_b_render?