整个php数组变成变量......或类似的东西

时间:2012-05-09 10:24:42

标签: php arrays

我第一次发布在这里..

所以我是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)

我想要做的是能够基本上分配我回到变量的所有内容。因为我觉得我能够轻松地选择我想要的东西......我不知道有什么其他方法可以做到:/

对不起,如果它有点模糊,不太擅长解释自己,但我希望有人可以锻炼我正在谈论和帮助。

5 个答案:

答案 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)

抱歉,刚想通你有嵌套数组,为什么不通过$ main_content_fetch [“content”] [0] [“content”]访问所需的项目? 无论如何,通过print_r($ arr,TRUE),您可以打印实际项目并查看您正在处理的数组的结构。

如果我理解正确,为了获得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?