我正在尝试设置网站上每个帖子的最大长度,但strlen()不适用于数组。所以我需要将其分解以检查数组中的每个帖子。
如果法规工作正常,我怎么能适应我的要求呢?问题是strlen()不接受对象。
for($i = 0, $size = count($somePosts); $i < $size; ++$i) {
if (strlen(utf8_decode($somePosts[$i])) > $max_length) {
$offset = ($max_length - 3) - strlen($somePosts);
$somePosts = substr($somePosts, 0, strrpos($reviewPosts, ' ', $offset)) . '...';
}
}
我正在使用Doctrine生成数组,工作正常。
感谢。
编辑:
错误 - 警告:strlen()期望参数1为字符串,给定对象
编辑2:
现在没有错误消息,但代码在限制帖子长度方面不起作用。
答案 0 :(得分:3)
您需要访问当前数组项,例如$somePosts[$i]
而不是$somePosts
for($i = 0, $size = count($somePosts); $i < $size; ++$i) {
if (strlen(utf8_decode($somePosts[$i])) > $max_length) {
$offset = ($max_length - 3) - strlen($somePosts[$i]);
$somePosts[$i] = substr($somePosts[$i], 0, strrpos($reviewPosts, ' ', $offset)) . '...';
}
}
答案 1 :(得分:0)
作为替代方案,您可以使用array_map
<?php
$strs = array('abcdefgh', 'defghjklmn', 'ghjefggezgzgezg');
$max = 5;
$strs = array_map(function($val) use ($max) {
if (strlen($val.'') < $max) return $val.'';
return substr($val.'', 0,$max-3).'...';
},$strs);
var_dump($strs);
EDIT隐式强制转换添加到强制转换对象