1

データベースから特定のキーと値を取得しようとしています。私のデータベースエントリは次のようになります:

id | name | description      | value
------------------------------------------
1  | lang | default language | en
2  | date | date format      | YYYY-MM-DD

nameフィールドとフィールドのみをエコーし​​たいvalue。次のように、ネストされた foreach ループを使用してみました。

foreach($details as $key => $value)
{
    foreach($value as $index => $row)
    {
        echo $index . " / " . $row . "<br />";
    }
    echo "<br />";
}

しかし、それはエコーするだけです:

id / 1
name / lang
description / default language
value / en

id / 2
name / date
description / date format
value / YYYY-MM-DD

ただし、 so: のようにオフセットを追加すると、 name の代わりに、または の代わりに$index[1]this like が取得されます。aedescription

以前は をwhile使用してループから作業していましmysql_fetch_arrayたが、これにより繰り返し要素 ( a<tr>など) が得られますが、ユーザーが管理するフォームを作成するために使用されるため、フィールドの値を抽出するだけで済みます。

私がそのようなことをするための提案や別のアプローチを誰かが持っていますか?

編集

クエリはクラス ファイルから取得されます。

// extracted from my queries.class.php
public function my_prefs()
{
   global $db;
   $query = "SELECT * FROM preferences WHERE value!=NULL";
   return $db->select($query);
}
// extracted from the source file 
$module_details = $query->my_prefs();

編集#2

おそらく、これは私のニーズを理解するのに役立ちます:

foreach($module_details as $key => $value)
{
    print_r($module_details);
}

戻り値:

Array
(
    [0] => stdClass Object
    (
        [id] => 1
        [name] => lang
        [description] => default language
        [value] => en
    )

    [1] => stdClass Object
    (
        [id] => 1
        [name] => date
        [description] => date format
        [value] => YYYY-MM-DD
    )
}

lang/endate/のみにアクセスする必要がありますYYYY-MM-DD

4

3 に答える 3

0

次のようなものを探しているようです。

$tmp = array();
foreach($details as $key => $value)
{
    // "name" => "value" dictionary later access
    $tmp[$value["name"]] = $value["value"]; 
    echo $value["name"] . " = " . $value["name"]; // echos e.q. "date = YYYY-MM-DD"
    echo "<br/>";
}

echo $tmp["date"]; // echos e.q. "YYYY-MM-DD"
于 2013-09-11T15:30:25.323 に答える
0

多分私は質問を誤解しました..

しかし、配列から特定の列エントリにアクセスしようとしていると思います。数値インデックスを使用する代わりに、出力しているキーを使用してこれを行うことができます。

foreach($details as $key => $value)
{
   echo $value['name'];
   echo $value['value'];
   echo "<br />";
}

編集

クエリの結果を制限して、要求したフィールドのみを置換する場合:

 $query = "SELECT * FROM preferences WHERE value!=NULL";

 $query = "SELECT name, value FROM preferences WHERE value!=NULL";
于 2013-09-11T15:28:08.197 に答える
0

最後に、何かを機能させることに取り掛かりました。これが私がしたことです:

foreach($details as $row)
{
    $name = $row->name;
    $value = $row->value;

    // In order to specify for checkboxes, select, radio, etc.
    if($name == "lang")
    {
        // different info depending on the value
    }
    else
    {
        // do something generic here
    }
}

最適なオプションではないかもしれませんが、これは機能する必要があるように機能します。

于 2013-09-12T20:52:43.430 に答える