javascript - PHP 数组不通过循环显示所有值

标签 javascript php jquery html arrays

我正在编写一个 php 函数,它将内容附加到 $results 变量,并将返回附加到它的所有结果。

我有一个变量 $myArray,它包含许多单独的数组,如下所示

Array(
[0] => ABC
[1] => DEF
[2] => GHI
[3] => JKL
 )
Array(
[0] => MNO
[1] => 123A
[2] => 123B
[3] => 123C
 )
Array(
[0] => orange
[1] => yellow
[2] => green
[3] => blue
 )

在我的代码中,我循环遍历内容以在屏幕上生成按钮和数据。理想情况下,如果按下第一个按钮,则显示第一个数组(ABC,DEF,GHI,JKL),第二个按钮(MNO,123A,123B,123C)等的内容。

这是我生成内容的循环

for($index=0; $index < count($exampleArray); index++){
  $myArray = array_values(array_filter($exampleArray[$index]["Column2"]));
  $returnVariable .= '<td>
    <button type="button" class="open-my-modal btn btn-primary" 
        data-numbers="'.htmlspecialchars(json_encode($myArray), ENT_QUOTES, 'UTF-8').'" </td>';

上面的代码根据正在传递并发送到模式的数据生成不同的按钮。我创建 id 的模态代码部分如下

$returnVariable .= '<tr>
                        <td><span id ="value1"></span></td>
                        <td><span id ="value2"></span></td>
                        <td><span id ="value3"></span></td>
                        <td><span id ="value4"></span></td>
                    </tr>

然后我有一个脚本,当模式打开时,我将数据链接到 html id。

$returnVariable .= '<script>

$(document).ready(function () {             
$(".open-my-modal").click(function(){
  $("#value1").html($(this).data("numbers")[0]);

问题是无论哪个按钮都会显示相同的信息。在任何按钮上传递的唯一数据是 ABC、DEF、GHI、JKL。

我打电话

$("#value1").html($(this).data("numbers")[0]); Only ABC will show.

如果我打电话

$("#value1").html($(this).data("numbers")); It shows ABC up to JKL

数据应该根据单击的按钮动态变化。 MNO 等或橙色、黄色永远不会出现。对于每个按钮,它仅采用第一个数组。

例如,内容将动态循环

<td><span id ="value1"></span></td> = ABC
                    <td><span id ="value2"></span></td>= DEF
                    <td><span id ="value3"></span></td>= GHI
                    <td><span id ="value4"></span></td>= HIJ

单击“下一步”按钮的值应该 =

<td><span id ="value1"></span></td> = MNO
                    <td><span id ="value2"></span></td>= 123A
                    <td><span id ="value3"></span></td>= 123B
                    <td><span id ="value4"></span></td>= 123C

等等,等等

最佳答案

发生这种情况的原因是 $myArray 被覆盖。您发布了:

Array(
[0] => ABC
[1] => DEF
[2] => GHI
[3] => JKL
 )
Array(
[0] => MNO
[1] => 123A
[2] => 123B
[3] => 123C
 )
Array(
[0] => orange
[1] => yellow
[2] => green
[3] => blue
 )

嗯,数组键[0],[1],[2],[3]在每个实例中都是相同的,并且没有任何东西可以“包含”每个数组。

你确实需要一个多维数组,更像这样:

[0] => [
    [0] => ABC
    [1] => DEF
    [2] => GHI
    [3] => JKL
],
[1] => [
    [0] => MNO
    [1] => 123A
    [2] => 123B
    [3] => 123C
],
// ...

如果您使用 var_dump($myArray[0]); 您将获得“第一个”集合(数组从 0 开始索引):

[0] => ABC
[1] => DEF
[2] => GHI
[3] => JKL

并且 var_dump($myArray[1]); 为您提供第二组:

[0] => MNO
[1] => 123A
[2] => 123B
[3] => 123C

等等...

多维数组中的按键可以对应按下的按钮,例如

  • 按钮 1:$myArray[0]
  • 按钮 2:$myArray[1]
  • 按钮 3:$myArray[2]
  • 按钮 4:$myArray[3]

关于javascript - PHP 数组不通过循环显示所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45329832/

相关文章:

javascript - 给同一个id的div设置不同的文本

javascript - 如何直接从onclick将变量从html传递到js

php - 为什么我的 MySQL 数据库插入不起作用?

javascript - 如何在到达最后一个带有 tabindex 的元素后从 1 开始重复 tabindex?

jquery - Node.js、Express、jQuery.param() - 从 JSON 中删除引号

Javascript 获取一个字符串中的多个子字符串

javascript - 关于动态文本框的建议

jquery - 使用 Jquery 更改 CSS,如何保留规则的一部分

php - Laravel 5 session 生命周期

php - 在 mysql 和 Codeigniter 中将值从一个数据库移动到另一个数据库