PHP:如何按长度删除数组元素?

时间:2017-10-31 10:44:13

标签: php arrays

我有这个数组输出:

Array
(
 [0] => de la que fue colaborador Sicard, fue realizado ya en 1795 en la Décade philosophique y en el Magasin encyclopedique, y su aparición dos años después
 [1] => de la obligación de tener presentes incesantemente estas combinaciones {44}. Tienen un carácter más estable que las ideas, pero son también
 [2] => de la época X de su Esquisse dun tableau historique del progrès de lesprit humain, pero no apareció en ninguna de las versiones publicadas
 [3] => de la Asociación de bibliotecarios americanos, es una
}

你能帮我删除超过100个或10个单词的所有元素吗?

这是我的代码。

不幸的是,当我使用变量时,专家提供的代码不起作用:

<?php
function tag_contents($string, $tag_open, $tag_close){
   foreach (explode($tag_open, $string) as $key => $value) {
       if(strpos($value, $tag_close) !== FALSE){
            $result[] = substr($value, 0, strpos($value, $tag_close));;
       }
   }
   return $result;
}

$string = 'de la que fue colaborador Sicard, fue realizado ya en 1795 en la Décade philosophique y en el Magasin encyclopedique, y su aparición dos años después de la obligación de tener presentes incesantemente estas combinaciones {44}. Tienen un carácter más estable que las ideas, pero son también de la época X de su Esquisse dun tableau historique del progrès de en el lesprit humain, pero no apareció en ninguna de las versiones publicadas de la Asociación de bibliotecarios americanos, en el';
$strpos =  'de la' ;
$tagclose = 'en el';
echo "<pre>";
print_r(tag_contents($string , $strpos , $tagclose));
echo "</pre>";

?>

这些字符串太短,但我想知道如何删除超过&#39; X&#39;字符或&#39; X&#39;字?

3 个答案:

答案 0 :(得分:1)

只需遍历数组并检查长度和单词的条件,并根据它取消设置数组元素

$arr = Array
(
    0 => 'de la que fue colaborador Sicard, fue realizado ya en 1795 en la Décade philosophique y en el Magasin encyclopedique, y su aparición dos años después',
 1 => 'de la obligación de tener presentes incesantemente estas combinaciones {44}. Tienen un carácter más estable que las ideas, pero son también',
2 => 'de la época X de su Esquisse dun tableau historique del progrès de lesprit humain, pero no apareció en ninguna de las versiones publicadas',
3 => 'de la Asociación de bibliotecarios americanos, es una'
);
foreach($arr as $key=>$value)
{
    if(strlen($value)>100 || str_word_count($value) > 10)
    {
        unset($arr[$key]);
    }
}
var_dump($arr);

DEMO

答案 1 :(得分:1)

$tmp = [
    'de la que fue colaborador Sicard, fue realizado ya en 1795 en la Décade philosophique y en el Magasin encyclopedique, y su aparición dos años después',
    'de la obligación de tener presentes incesantemente estas combinaciones {44}. Tienen un carácter más estable que las ideas, pero son también',
    'de la época X de su Esquisse dun tableau historique del progrès de lesprit humain, pero no apareció en ninguna de las versiones publicadas',
    'de la Asociación de bibliotecarios americanos, es una'
];

$tmp = array_filter($tmp, function($currentElement) {
    return strlen($currentElement) <= 100 && str_word_count($currentElement) <= 10;
});

答案 2 :(得分:0)

请尝试以下代码:

foreach($yourArray as $key=>$value) { 
  if(strlen($value)>100 || str_word_count($value)>10) {
     unset($yourArray['key']);
  }
}

echo '<pre>';
print_r($yourArray);