多行PHP数组
我有一个数组,看起来像下面的例子。如何仅获取第一行(音频文件路径)中的值?我已经尝试了多行PHP数组,php,arrays,Php,Arrays,我有一个数组,看起来像下面的例子。如何仅获取第一行(音频文件路径)中的值?我已经尝试了array\u rand(),它只逐字给出值。很抱歉,如果之前已回答此问题,我自己找不到任何内容。提前谢谢 Array ( [0] => path/to/audiofile.mp3 3500440 audio/mpeg [1] => path/to/anotheraudiofile.mp3 5661582 audio/mpeg ... ) 编辑:var_dump给了我以下信息: array(2
array\u rand()
,它只逐字给出值。很抱歉,如果之前已回答此问题,我自己找不到任何内容。提前谢谢
Array
(
[0] => path/to/audiofile.mp3
3500440
audio/mpeg
[1] => path/to/anotheraudiofile.mp3
5661582
audio/mpeg
...
)
编辑:var_dump给了我以下信息:
array(2) {
[0]=>
string(98) "path/to/audiofile.mp3
3500440
audio/mpeg
"
[1]=>
string(95) "path/to/anotheraudiofile.mp3
5661582
audio/mpeg
"
}您是否尝试过在线退货拆分
$tmp = explode(PHP_EOL, $myArray[0]);
$tmp = explode('"', $tmp[0]);
$path = $tmp[1];
您是否尝试过在线退货拆分
$tmp = explode(PHP_EOL, $myArray[0]);
$tmp = explode('"', $tmp[0]);
$path = $tmp[1];
真正的解决方案是修改实际构建此数组的代码,但是,您可以通过一对数组函数(其中有许多函数)轻松提取所需的内容: 您可以这样处理整个阵列:
function extractFirstLine($val)
{
$val = explode(PHP_EOL, $val);
return $val[0];
}
$array = array_map('extractFirstLine', $array);
或者,由于PHP 5.3是更常见的方法:
$array = array_map(function($v)
{
$v = explode(PHP_EOL, $v);
return $v[0];
}, $array);
从PHP 5.4开始,您可以编写更短的代码:
$array = array_map(function($v)
{
return (explode(PHP_EOL, $v))[0];
}, $array);
这应该可以做到(注意,此代码未经测试,但手册页应该可以帮助您解决问题)。真正的解决方案是更改实际构造此数组的代码,但是,您可以通过一对数组函数(其中有许多函数)轻松提取所需的内容: 您可以这样处理整个阵列:
function extractFirstLine($val)
{
$val = explode(PHP_EOL, $val);
return $val[0];
}
$array = array_map('extractFirstLine', $array);
或者,由于PHP 5.3是更常见的方法:
$array = array_map(function($v)
{
$v = explode(PHP_EOL, $v);
return $v[0];
}, $array);
从PHP 5.4开始,您可以编写更短的代码:
$array = array_map(function($v)
{
return (explode(PHP_EOL, $v))[0];
}, $array);
这应该可以做到(注意,此代码未经测试,但手册页应该可以帮助您解决某些问题)。B“e知道这取决于操作系统行可能不同的字符,如果您使用的是win操作系统,您可以使用\r\n
$Path=substr($array[0],0,strpos(“\n“,$array[0]))B“e注意到这取决于操作系统行可能不同的字符,如果使用win操作系统,您可以使用\r\n
$Path=substr($array[0],0,strpos(“\n”,$array[0]))请进行
var\u转储,而不是print\r
您所说的“我只获取第一行中的值”是什么意思?您的意思是$array[0]
只返回第一行,还是只看到第一行?您在什么系统上运行此代码(windows、Linux、OSX或*NIX)?斯特伦告诉你什么?更多信息将是nice@EliasVanOotegem:$array[0]返回当前的所有内容,我只需要第一行。在windows上运行。如果我不是那么迷路的话,我会给你更多的信息。我将研究其他内容。@HerrSerker:编辑了这个问题。那么array\u rand()在那里做什么呢?请做一个var\u dump
,而不是print\u r
你说的“我只得到第一行的值”是什么意思?您的意思是$array[0]
只返回第一行,还是只看到第一行?您在什么系统上运行此代码(windows、Linux、OSX或*NIX)?斯特伦告诉你什么?更多信息将是nice@EliasVanOotegem:$array[0]返回当前的所有内容,我只需要第一行。在windows上运行。如果我不是那么迷路的话,我会给你更多的信息。我将研究其他内容。@HerrSerker:编辑了这个问题。那么array_rand()在这里做什么呢?在换行符上使用双引号这很有效,但我必须纠正一下。就像“鬼说”一样,在newline上使用双引号\不行。另外,explode()
函数中的变量也是$
。谢谢@charlenemasters:请不要硬编码行尾字符。PHP有一个预定义的常量PHP_EOL
,它为运行它的系统保存正确的行尾字符。如果您的服务器正在运行windows,PHP\u EOL
将\r\n
。对于其他系统,PHP\u EOL
将是\n
。使用该常量可以使代码更易于移植在换行符上使用双引号这是可行的,但我必须进行更正。就像“鬼说”一样,在newline上使用双引号\不行。另外,explode()
函数中的变量也是$
。谢谢@charlenemasters:请不要硬编码行尾字符。PHP有一个预定义的常量PHP_EOL
,它为运行它的系统保存正确的行尾字符。如果您的服务器正在运行windows,PHP\u EOL
将\r\n
。对于其他系统,PHP\u EOL
将是\n
。使用该常量可以使代码更具可移植性,或者使用依赖于平台的预定义运行时常量PHP_EOL
,这将是windows系统上的\r\n
,而LinuxYes上的\n
我对该常量一无所知。或者使用依赖于平台的预定义运行时常量PHP_EOL
,在windows系统上是\r\n
,在LinuxYes上是\n
,我不知道这个常数。