首页 > 解决方案 > 为什么数组值显示未定义的偏移量?

问题描述

parse_url() 不会提取 URL 的所有属性并将每个属性转储到数组中吗?我的意思是属性:方案主机端口用户传递路径查询片段

所以数组看起来像这样,我认为:

["0"=>"scheme","1"=>"host","2"=>"port","3"=>"user","4"=>"pass","5"=>"path","6"->"query","7"=>"fragment"]

所以现在,我将所有这些数组添加到 $url_properties = array(); 并尝试回显数组的每个值。像这样...

<?php

$url = 'http://user:password@domain.com/path.php?query_string=value#fragment1';

print_r(parse_url($url)); echo '<br>';
echo '<br>';
var_dump(parse_url($url)); echo '<br>';

$url_properties = array();
$url_properties = parse_url($url);

echo $url_properties[0];
echo $url_properties[1];
echo $url_properties[2];
echo $url_properties[3];
echo $url_properties[4];
echo $url_properties[5];
echo $url_properties[6];
echo $url_properties[7];

?>

但我收到一个错误:注意:未定义的偏移量:第 12 行 C:\xampp\htdocs...php 中的 0 注意:未定义的偏移量:第 13 行 C:\xampp\htdocs...php 中的 1 注意:未定义的偏移量: 2 在 C:\xampp\htdocs...php 第 14 行 注意:未定义的偏移量:3 在 C:\xampp\htdocs...php 第 15 行 注意:未定义的偏移量:4 在 C:\xampp\htdocs。 ..php 在第 16 行 注意:未定义的偏移量:5 在 C:\xampp\htdocs...php 在第 17 行 注意:未定义的偏移量:6 在 C:\xampp\htdocs...php 在第 18 行 注意:未定义的偏移量: 7 在 C:\xampp\htdocs...php 第 19 行

这是为什么?

然而,这有效....

<?php

$url = 'http://user:password@domain.com/path.php?query_string=value#fragment1';

print_r(parse_url($url)); echo '<br>';
echo '<br>';
var_dump(parse_url($url)); echo '<br>';

$url_properties = array();
$url_properties = parse_url($url);

foreach($url_properties AS $property)
{
    echo $property;
}

?>

我得到回应: httpdomain.comuserpassword/path.phpquery_string=valuefragment1

这证明 $url_properties 数组不为空。那么为什么我的第一个代码在尝试回显这个数组的每个值时会出现错误呢?奇怪的!

编辑:我已经意识到我的错误。该数组是一个关联数组,因此这是有效的:

echo $url_properties['scheme'];
echo $url_properties['user'];
echo $url_properties['pass'];
echo $url_properties['host'];
echo $url_properties['port'];
echo $url_properties['path'];
echo $url_properties['query'];
echo $url_properties['fragment'];

但是我应该添加几行代码,这样即使以下代码也可以工作并且不会给出未定义的偏移错误?

echo $url_properties[0];
echo $url_properties[1];
echo $url_properties[2];
echo $url_properties[3];
echo $url_properties[4];
echo $url_properties[5];
echo $url_properties[6];
echo $url_properties[7];

标签: phparrays

解决方案


要将关联数组转换为索引数组,请使用array_values

$url_properties = array_values($url_properties);

echo $url_properties[0];
echo $url_properties[1];
echo $url_properties[2];
echo $url_properties[3];
echo $url_properties[4];
echo $url_properties[5];
echo $url_properties[6];
echo $url_properties[7];

推荐阅读