如何更改数组项?

时间:2018-12-07 05:53:23

标签: php arrays

我有一个包含链接的数组。我正在尝试删除这些链接的一部分。例如:

( some random text)

我想更改这些链接,如下所示:

$array = [
  "https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular",
  "https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular"
];

有没有可能编辑数组项目的方法?

2 个答案:

答案 0 :(得分:1)

给出数组:

$array = [
    "https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular",
    "https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular"
];

使用array_walk()(在适当的位置修改数组)。

这次使用正则表达式:

function filter_url(&$item)
{
    preg_match('|(https:\/\/\w+\.\w{2,4}\/\w+-\w+)-.+|', $item, $matches);
    $item = $matches[1];
}

array_walk($array, 'filter_url');

(看到它工作here)。

请注意,filter_url通过引用传递了第一个参数,如文档中所述,因此对每个数组项的更改都将在适当位置执行并影响原始数组。

使用array_map()(返回修改后的数组)

只需使用substr,因为我们几乎不了解您的实际要求:

function clean_url($item)
{
    return substr($item, 0, 36);
}

$new_array = array_map('clean_url', $array);

工作here


如何实际过滤数组元素的细节取决于您。

此处显示的示例似乎毫无意义,因为您将所有元素都设置为完全相同的值。如果您知道长度,可以使用substr,也可以编写更强大的正则表达式。

由于示例中输入数组的所有元素都相同,因此我假设这并不代表您的实际输入。

您还可以使用forforeachwhile迭代数组,但是当您具有特定的数组函数来处理这种情况时,这些选项中的任何一个似乎都不那么优雅

答案 1 :(得分:0)

有多种方法。一种方法是遍历项目,并使用substr()对其进行裁剪。

$arr = array("https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular",
"https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular");

for ($i = 0; $i < count($arr); $i++)
{
    $arr[$i] = substr($arr[$i], 0, 36);
}