2012-05-08 72 views
-2

嗨,我想知道如果这可以做到没有foreach循环。我试图提取数据,但它保持循环。我只想运行一次并将值存储在一个数组中。请你帮助我做到这一点。我是新来的PHP,所以我道歉,如果它似乎基本。提前致谢。Foreach在php中的替代?

foreach ($result->titles as $title) 
{ 
    "Title ID" => $title->id, 
    "Title" => $title->title_name, 
    "Created On" => $month_created_on, 
    "Solved On" => $solved_on , 
    "Status" => $title->status, 
} 
+0

那些钥匙是什么?他们属于哪个阵列? – Shoe

+0

以及数据来自哪里?你想做什么(读取数据或写入?)。 – Sliq

+0

这些键用于标识我正在写入的字段。我正在阅读和写入数据。数据正在读取正常。我想写这个数据到另一个文件,但问题是它每次输出。我只想在页面刷新时显示最新的键。再次感谢 –

回答

0

要运行一次,您不需要循环。只需直接访问$result->titles阵列中的第一个元素即可。这假设数组是数字索引的,并且第一个元素位于索引0。如果不是这种情况,请修改[0]以引用第一个元素。

$title_data = array(
    "Title ID" => $result->titles[0]->id, 
    "Title" => $result->titles[0]->title_name, 
    "Created On" => $month_created_on, 
    "Solved On" => $solved_on , 
    "Status" => $result->titles[0]->status, 
); 
0

当你这样做:

"Title ID" => $title->id 

这是关联数组符号,你正在使用标题ID为关键和$title->id作为值。为了使你在工作的代码,它需要是这样的:

foreach ($result->titles as $title) 
{ 
    $newValues[] = array("Title ID" => $title->id, 
         "Title" => $title->title_name, 
         "Created On" => $title->month_created_on, 
         "Solved On" => $title->solved_on , 
         "Status" => $title->status 
        ); 
} 

但所有的确实被重新分配$result->titles阵列与自己的自定义键的关联数组。我不确定这是否是你想要的。

为了得到result->titles的第一个元素做这样的事情:

$title_id = $result->titles[0]->id; 
$title_name = $result->titles[0]->title_name; 
// etc... 
0

是的,你可以,你可以使用的whileeach组合来实现同样的事情foreach可以做

$all = array(); 
while (list (, $data) = each ($result->titles)) { 
    $array = array(); 
    while (list ($key, $value) = each ($data)) { 
     $array [$key] = $value; 
    } 
    $all [] = $array; 
} 
echo "<pre>"; 
print_r ($all);