0

以下を使用して、使用する必要があるフィールドの配列を収集しています。

 $reqFlds = array();
    $results = mysql_query("aid, fld_name from field
where aid = $acct_id2 and req_flag = 1");
        while($result = mysql_fetch_assoc($results))
            {
            $reqFlds[] = $result;
            }

    <script language="javascript">
        var reqFlds= <?php echo "new Array(". trim(json_encode($reqFlds), '[]').")"; ?>;
    </script>

私の「reqFlds」配列は次のように吐き出します:

<script language="javascript">
    var reqFlds = new Array(
    {"aid":"15","fld_name":"Job Issued"},
    {"aid":"18","fld_name":"Job Title"},
    {"aid":"20","fld_name":"Banner Details"},
    {"aid":"202","fld_name":"Flyer Details"},
    {"aid":"2134","fld_name":"Code Not above"},
    {"aid":"5862","fld_name":"Quantity"});

</script>

次のような配列データを必要とする関数が与えられました。

var fldToUse = ['15||Job Issued', '18||Job Title', '20||Banner Details'];

上記の形式で吐き出すように、配列 [reqFlds] を書き換えるにはどうすればよいですか。

前もって感謝します。

最近の編集 - 以下は、コードと結果を正確に配置した方法です

<?php
$reqFlds  = array();
$results = mysql_query("select id, display_name from field where account_id = $acct_id2 and required_flag = 1");
    while($RequireResult = mysql_fetch_assoc($results))
        {
            $reqFlds[] = $RequireResult;
        }

foreach($reqFlds as $reqFlds)
    {
    $reqFlds = $reqFlds["id"] . "||" . $reqFlds["display_name"];
}
?>

<script language="javascript">
    var requiredFieldsPRS = <?php echo "new Array(". trim(json_encode($reqFlds), '[]').")"; ?>;
    var holdReqFlds = <?php echo json_encode($reqFlds); ?>;
</script>

このようなコードを foreach をループの外に置いたままにしておくと、ソースを表示したときにこれが 1 つしか取得されません。

<script language="javascript">
    var requiredFieldsPRS = new Array("'5862||Quantity'");
    var holdReqFlds = "'5862||Quantity'";
</script>

配列に入れると、全体が死ぬ

私はただ疲れているだけだと確信しており、おそらく他の言い訳を思い付くことができますが、要するに、私は自分が間違っていることをしていないということです.

4

5 に答える 5

1
var newArray = [];

for(var i = 0; i != reqFlds.length; ++i)
{
  newArray.push(reqFlds[i].aid + "||" + reqFlds[i].fld_name);
}

newArray が必要な形式になります。これはクライアント側のソリューションです。PHP側で変更する必要がある場合、それは別の解決策です:

$reqFlds = array();
    $results = mysql_query("aid, fld_name from field
where aid = $acct_id2 and req_flag = 1");
        while($result = mysql_fetch_assoc($results))
            {
            $reqFlds[] = $result['aid'] . '||' . $result['fld_name'];
            }

    <script language="javascript">
        var reqFlds= <?php echo "new Array(". trim(json_encode($reqFlds), '[]').")"; ?>;
    </script>
于 2013-01-11T18:00:34.960 に答える
0

これでうまくいくはずです。素敵できれい。

<?php 
    $reqFlds = array();
    $results = mysql_query("aid, fld_name from field where aid = $acct_id2 and req_flag = 1");

    while ($result = mysql_fetch_assoc($results)) {
        $reqFlds[] = $result['aid'] . '||' . $result['fld_name'];
    }
?>

<script language="javascript">
    var reqFlds= <?php echo json_encode($reqFlds); ?>;
</script>
于 2013-01-11T18:03:51.650 に答える
0

クライアント側で試すことができます:

  var reqFlds = new Array(
    {"aid":"15","fld_name":"Job Issued"},
    {"aid":"18","fld_name":"Job Title"},
    {"aid":"20","fld_name":"Banner Details"},
    {"aid":"202","fld_name":"Flyer Details"},
    {"aid":"2134","fld_name":"Code Not above"},
    {"aid":"5862","fld_name":"Quantity"});


var transformed = reqFlds.map(function(item) {
  return item["aid"] + "||" + item["fld_name"];
});

フィドル

サーバー側の場合、Eli のソリューションはほぼ正しいように見えます。

于 2013-01-11T18:04:41.637 に答える
0

これでうまくいくはずです

var reqFldsFormatted = new Array();

for (var i=0; i<reqFlds.length; i++) {
    // Written for readability, not execution speed
    reqFldsFormatted[i] = reqFlds[i]["aid"] + "||" + reqFlds[i]["fld_name"];
}
于 2013-01-11T18:10:04.270 に答える
0

次のように、PHP コードで配列を変換できます。

$reqFlds = array();
$results = mysql_query("select aid, fld_name from field where aid = $acct_id2 and req_flag = 1");
while ($result = mysql_fetch_assoc($results)) {
    $reqFlds[] = $result;
}
// at this point the array becomes something like this
//
// array(
//     array("aid" => "15","fld_name" => "Job Issued"),
//     array("aid" => "18","fld_name" => "Job Title"),
//     array("aid" => "20","fld_name" => "Banner Details"),
//     array("aid" => "202","fld_name" => "Flyer Details"),
//     array("aid" => "2134","fld_name" => "Code Not above"),
//     array("aid" => "5862","fld_name" => "Quantity")
// );
//
// here is how you transform array elements to desired format:
foreach($reqFlds as &$reqFld) {
    $reqFld = $reqFld["aid"] . "||" . $reqFld["fld_name"];
}
unset($reqFld);

その後、次のことができます。

var reqFlds = <?php echo json_encode($reqFlds); ?>;

出力:

<script>
var reqFlds = ["15||Job Issued","18||Job Title","20||Banner Details","202||Flyer Details","2134||Code Not above","5862||Quantity"];
</script>
于 2013-01-11T18:10:37.547 に答える