PHP - 使用 HTMLvalues 创建数组的正确方法

Posted

技术标签:

【中文标题】PHP - 使用 HTMLvalues 创建数组的正确方法【英文标题】:PHP - Right way to create an array with HTMLvalues 【发布时间】:2015-12-15 05:50:41 【问题描述】:

创建包含 html 值的 php 数组的最佳方法是什么?我需要能够将其编码为 JSON 并成功解码。

例如:我的 PHP 数组如下所示:

Array
(
    [0] => Array
        (
            [Name] => <a href="http://gotourl.com?user=john+vz">john</a>
            [Sex] => M
        )

    [1] => Array
        (
            [Name] => <a href="http://gotourl.com?user=sue+hp">sue</a>
            [sex] => F
        )
)

【问题讨论】:

您可以尝试传递值,但不能传递 HTML。您可以生成 html 并使用 json 中的值使用 javascript 或您想要的任何内容对其进行迭代。 也许this可以帮助你。 【参考方案1】:

我不知道你如何处理你的数据,或者你是否使用 JS 框架,但这是一个小例子,它是如何工作的

$htmlAnchors = array (
    array (
            "Name" => '<a href="http://gotourl.com?user=john+vz">john</a>',
            "Sex" => "M"
        ),
    array(
            "Name" => '<a href="http://gotourl.com?user=sue+hp">sue</a>',
            "Sex" => "F"
        )
);

$jsonOutput = json_encode( $htmlAnchors );
?>
<!DOCTYPE html>
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>

        <div>TODO write content</div>
        <div id="anchors">
            <!--insert links here-->
        </div>
        <script type="text/javascript">
            var json = <?php echo $jsonOutput; ?>;
            json.forEach( function( entry ) 
                var anchors = document.getElementById( "anchors" );
                anchors.innerHTML = anchors.innerHTML + entry.Name + "</br>";
            );
        </script>
    </body>
</html>

【讨论】:

【参考方案2】:

只保存值,而不是 html 结构。

$array   = array();
$array[] = array(
    "link"  => "http://gotourl.com?user=john+vz",
    "name"  => "john"
    , "sex" => "M"
);
$array[] = array(
    "link"  => "http://gotourl.com?user=sue+hp",
    "name"  => "sue"
    , "sex" => "F"
);
$string = json_encode($array);

传输字符串并解码如下:

$links = json_decode($string);
foreach ($links as $value) 
    printf('<a href="%s">%s Sex: %s</a>', $value['link'], $value['name'], $value['sex']);

您可以考虑任何其他结构来保存这些值。您不需要使用 KVP 保存它,您可以使用带有命名键的嵌套数组。

【讨论】:

【参考方案3】:

PHP 的 json_encode 函数为您完成所有繁重的工作。您可以像这样创建数组并对其进行编码:

$people = array(
    array
    (
        'Name' => '<a href="http://gotourl.com?user=john+vz">john</a>',
        'Sex' => 'M'
    ),
    array(
        'Name' => '<a href="http://gotourl.com?user=sue+hp">sue</a>',
        'sex' => F
    )
);

$json = json_encode($people);

【讨论】:

以上是关于PHP - 使用 HTMLvalues 创建数组的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

php循环创建数组

PHP数组总汇

如何用php创建一个无限遍历数组,并打印

PHP解析PHP中的数组

如何使用 PHP 为 JSON 创建一个数组?

如何使用 PHP 和 fgetcsv 函数从 CSV 文件创建数组