如何修复我的代码以使其起作用?

时间:2019-02-19 09:28:53

标签: php

我是PHP(以及完全编程)的新手。我看了一段解释基本知识的视频,所以我决定自己玩PHP。我写了这段代码:

{
  "name": "test",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "vue": "^2.5.22"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.4.0",
    "@vue/cli-plugin-eslint": "^3.4.0",
    "@vue/cli-service": "^3.4.0",
    "babel-eslint": "^10.0.1",
    "eslint": "^5.8.0",
    "eslint-plugin-vue": "^5.0.0",
    "vue-template-compiler": "^2.5.21"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "rules": {},
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

我正在尝试输出:

  

约翰很聪明

但是,它输出:

  

是米

我不确定如何解决此问题。

请帮助,谢谢。

4 个答案:

答案 0 :(得分:2)

您的数组数据(每个项目)如下:

[
    'john',
    'smart'
]

这些值没有键关联。因此,在您的输出示例中,您实际需要做的是:

foreach ($people as $el)
{
    echo $el[0]. ' is ' .$el[1];
}

您的数据是一个从0开始的数字索引数组。因此0 = john和1 = smart。

最好像这样构造数组:

$people = [
    0 => [
        'name' => 'john',
        'intelligence' => 'smart'
    ], # etc.
];

foreach ($people as $el)
{
    echo $el['name']. ' is ' .$el['intelligence'];
}

在这里,我们使用有意义的命名键。

在您的代码示例中,您将执行以下操作:

foreach ($people as $name => $intelligence)

但是循环中的$name实际上是项目键。所以0、1等,并且智能是数组。不是你想的那样的名字和智慧。

但是,如果您只是想回显第一个元素,请执行以下操作:

echo $people[0][0]. ' is ' .$people[0][1];

答案 1 :(得分:1)

我想这就是你的意思:

<?php

$people = [
array("John", "smart"),
array("Mike", "dumb"),
array("Jose", "smart"),
array("Emmanuel", "dumb")
];

foreach ($people as $person) {
    echo $person[0] ." is ". $person[1]."<br/>";
}

如果您的people数组确实是您要编写的方式,则可以。 您可以改为像下面这样声明它。作为另一项练习,为什么不这样声明数组,为什么它们会修改其余的代码,以便打印出所需的内容。

$people = [
"John" => "smart",
"Mike" => "dumb",
"Jose" => "smart",
"Emmanuel" => "dumb"
];

您的echo语句不在for循环中。我将其移入其中。

您读取people数组的方式似乎不太正确,因此我将其更改为:

  • $person[0]-获取内部数组中的第零个元素,名称
  • $person[1]-获取数组中的第一个元素,即情报

答案 2 :(得分:0)

更改此

<?php 

 $people = [
    array("John", "smart"),
    array("Mike", "dumb"),
    array("Jose", "smart"),
    array("Emmanuel", "dumb")
 ];

 foreach ($people as $name => $intelligence) {

 };

 echo $name [0][0]." "."is ". $intelligence[0][1];

 ?>

对此

$people = [
"John" => "smart",
"Mike" => "dumb",
"Jose" => "smart",
];

    foreach ($people as $name => $intelligence) {

      echo $name." is ". $intelligence;

     };

答案 3 :(得分:0)

您可以创建一个简单的函数来传递参数,例如。要查找的人和一群人的名字。

<?php 

 $people = [
    ["John", "smart"],
    ["Mike", "dumb"],
    ["Jose", "smart"],
    ["Emmanuel", "dumb"]
 ];


 function return_Sentence( $name , $array ){
    foreach ($array as $details) {
           if($name == $details[0]){
                return $details[0] . ' is ' . $details[1];
           }
    }
  return 'Not Found';
 }

 echo return_Sentence( "John" , $people );

 ?>