string to array返回参数中的数组

时间:2015-04-29 08:34:18

标签: php arrays string parameters

我得到一个像这样的字符串,"voornaam, achternaam" 我把它交给一个函数。

当我使用字符串从数据库中获取数据时。

mysql_query("SELECT."$string". FROM ...")

这一切都很顺利。

现在。我想回馈我从数据库中选择的值。

我试过这样的事情。

<?php
function user_info($user_id, $fetch = "")
{
if (ctype_digit($user_id))
{
    if (empty($fetch))
    {
        $fetch = "*";
    }
    $query = mysql_query("SELECT ".$fetch." FROM accounts WHERE ID = '".$user_id."'");
    $data = mysql_fetch_assoc($query);
    $data['password'] = NULL;
}

if (empty($fetch))
{
    return $data;
}
else
{
    $fetch = explode(", ", $fetch);
    print_r($fetch);
    while($param = $fetch) {
        return $data[$param];
    }
}

//$item_result['created_by'] gives back a digit
user_info($item_result['created_by'], 'voornaam, achternaam')

我陷入了while循环 我并不认为这对循环有好处 所以我尝试了一些东西,对我而言似乎是合乎逻辑的 但在某种程度上它不会起作用。

4 个答案:

答案 0 :(得分:2)

尝试更改

  while($param = $fetch) {
    return $data[$param];
}

on foreach循环:

$temp = array();
foreach($featch as $key){
  $temp[$key] = (empty($data[$key]) ? ''  :  $data[$key] );
}
return $temp;

<强>更新

或者您可以使用for循环:

$temp = array();
for( $i =0; $i < count($fetch); $i++){
  $temp[$fetch[$i]] = (empty($data[$fetch[$i]]) ? ''  :  $data[$fetch[$i]] );
}
return $temp;

更新2

OR while while循环

$temp = array();
while(count($fetch)){
  $key = array_shift($fetch);
  $temp[$key] = (empty($data[$key]) ? ''  :  $data[$key] );
}
return $temp;

答案 1 :(得分:2)

现在正在运作!

我现在拥有的是:

$fetch = explode(", ", $fetch);
    $temp = array();
    for ($i = 0; $i < count($fetch); $i++) {
        $temp[$fetch[$i]] = (empty($data[$fetch[$i]]) ? '' : $data[$fetch[$i]]);
    }
    foreach ($temp as $data) {
        echo $data . ' ';
    }

答案 2 :(得分:1)

问题位于 -

$fetch = explode(", ", $fetch);
print_r($fetch);
while($param = $fetch) {
    return $data[$param];
}
  

$fetch现在是一个数组,未定义$param

你可以试试这个 -

$fetch = explode(", ", $fetch);
$i = 0;
$newData = array();
while($i < count($fetch)) {
    $newData[$fetch] = $data[$fetch];
    $i++;
}
return $newData;

我建议使用foreach代替while

答案 3 :(得分:0)

或者,如果它处于while循环中,则可以使用以下内容

$data=array();
while (list($var, $val) = each($fetch)) {
        $data[$var]=$val;
}