php - 为什么数组值显示未定义的偏移量?
问题描述
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];
解决方案
要将关联数组转换为索引数组,请使用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];
推荐阅读
- android - 使用 Textwatcher 时如何更新相同的编辑文本?
- ios - 使用呼叫目录扩展识别呼叫者 ID
- mongodb - 在 Mongodb (python) 中搜索数据库的所有集合
- assembly - *_dpbusd_epi32 或 *_maddubs_epi16 在 ARM 上等效?
- python - Django:如何在表单中表示 MoneyField
- json - Struts2.5 JSONInterceptor 没有填充 Action 类:
- java - 改造 call.enqueue 方法没有被调用
- gradle - 如何实现gradle条件依赖?
- mysql - 如何按多行和多列分组
- sbt - 运行`sbt new`时验证失败