Php 在嵌套数组中搜索,只从一列返回url值
我有一个数组,看起来是这样的,它是由以下内容生成的:Php 在嵌套数组中搜索,只从一列返回url值,php,arrays,csv,foreach,while-loop,Php,Arrays,Csv,Foreach,While Loop,我有一个数组,看起来是这样的,它是由以下内容生成的: $file = fopen($savedSource,"r"); while(! feof($file)) { $data = (fgetcsv($file)); } Array ( [0] => First Name [1] => Last Name [2] => Title [3] => Compan
$file = fopen($savedSource,"r");
while(! feof($file)) {
$data = (fgetcsv($file));
}
Array
(
[0] => First Name
[1] => Last Name
[2] => Title
[3] => Company / Account
[4] => Email
[5] => Lead ID
[6] => Profile Image
Zelayas
[7] => Zelayas
[8] =>
[9] => Kramer
[10] => zel@somewhere.com
[11] => 123456
[12] => https://media.com/0f48c22.jpg
Kanngiesser
[13] => Kanngiesser
[14] =>
[15] => Johnson
[16] => kanngie@somewhere.com
[17] => 7891234
[18] => https://media.com/135f3b7.jpg
我希望能够将这些URL存储到一个简单(无嵌套)数组中,这样结果就变成:
Array
(
[0] => https://media.com/0f48c22.jpg
[1] => https://media.com/135f3b7.jpg
==编辑===
从选定的答案来看,我基本上已经能够实现我所追求的目标
$new_array = array();
foreach($data as $a){
if(substr( $a, 0, 4 ) === "http"){
array_push($new_array, $a);
}
}
因此,$new_数组现在给了我
Array
(
[0] => https://media.com/0f48c22.jpg
Kanngiesser
[1] => https://media.com/135f3b7.jpg
Mostovoy
因此,脚本似乎将当前行的最后一个字段和下一行的第一个字段视为一个字段。您可以使用
substr
在字符串开头检测http
$new_array = array();
foreach($old_array as $a){
if(substr( $a, 0, 4 ) === "http"){
array_push($new_array, $a);
}
}
我的懒惰方式:循环并检查值是否以“http”
$url=preg_grep(“/^http/”,$array)开头代码>不确定此问题的标题是否准确。“每n次”表示“每6次获取一次”,但您的示例听起来好像您需要具有特定值的元素。你能澄清一下吗?@mopo922正确。OP的问题建议第6项和第24项也应该包含URL。这可以通过用余数(%)除法来完成,如果你真的在url后面,那么最好检查一下,以防输入在一天内发生变化SUBSTR($check,0,4)*我相信$new_array[]=$a稍微快一点,因为它避免了函数调用,但我在代码格式方面对这个答案投了更高的票。(另外请注意,如果$new_数组未定义,它不会抛出错误…这不一定是件好事)@RonakPatel您知道脚本为什么会抓取URL(每行的最后一个字段)和下一行的第一个字段吗?@jeffimperial:这是什么意思?您想从数组中获取所有URL
。是吗?@RonakPatel是的,这是我要找的网址。但出于某种原因,如果我尝试使用$new\u array[1]
,它将返回url加上下一行第一个字段的值。这就好像脚本没有检测到换行符(这表示单独的行,用于在数组中作为单独的项处理)
$new=array();
foreach ($array as $check){
if(substr($check,0,4)=='http')
$new[]=$check;
}