Php: strlen() vs. count() 问题: Warning: strlen() expects parameter 1 to be string, array given
Php: Strlen() vs. count () Problems: Warning: strlen() expects parameter 1 to be string, array given
我使用这些代码将 Phone 数字字符串拆分为区号和电话号码。
当我使用 "strlen($areacode)" 时,我收到 php 警告 strlen() 期望参数 1 为字符串,给定数组。
当使用count()代替strlen()时,脚本执行错误。我得到结果 "No AreaCode found".
我哪里错了?
<?php
$phonenumber = '0349152023';
$link = mysqli_connect('host', 'DB', 'Pass','User') or die(mysqli_error());
$db_selected = mysqli_select_db( $link, 'DB');
$ErsteDrei = substr($phonenumber,0,3);
$array = array();
$query = mysqli_query($link, "SELECT Areacode FROM `Areacodes` WHERE Vorwahl like '".$ErsteDrei."%' ORDER BY CHAR_LENGTH(Vorwahl) DESC");
while($row = mysqli_fetch_assoc($query)){
$array[] = $row;
}
foreach ($array as $areacode) {
$subString = substr($phonenumber, 0, strlen($areacode));
if ($subString == $areacode) {
$phone = $subString." ".substr($phonenumber, strlen($areacode));
}
}
if (!empty($phone)) {
echo $phone;
}
else {
echo "No AreaCode found.";
}
?>
这里发生的事情是您将数据作为关联数组 "mysqli_fetch_assoc" 获取。
所以每个 $row
实际上都是这样的数组:
array("Areacode"=>"0349"); //or whatever the code is
您可以执行以下操作:
foreach ($array as $areacode) {
$subString = substr($phonenumber, 0, strlen($areacode["areacode"]));
if ($subString == $areacode) {
$phone = $subString." ".substr($phonenumber, strlen($areacode));
}
}
或使用“mysqli_fetch_array
”代替“mysqli_fetch_assoc
”
我使用这些代码将 Phone 数字字符串拆分为区号和电话号码。
当我使用 "strlen($areacode)" 时,我收到 php 警告 strlen() 期望参数 1 为字符串,给定数组。
当使用count()代替strlen()时,脚本执行错误。我得到结果 "No AreaCode found".
我哪里错了?
<?php
$phonenumber = '0349152023';
$link = mysqli_connect('host', 'DB', 'Pass','User') or die(mysqli_error());
$db_selected = mysqli_select_db( $link, 'DB');
$ErsteDrei = substr($phonenumber,0,3);
$array = array();
$query = mysqli_query($link, "SELECT Areacode FROM `Areacodes` WHERE Vorwahl like '".$ErsteDrei."%' ORDER BY CHAR_LENGTH(Vorwahl) DESC");
while($row = mysqli_fetch_assoc($query)){
$array[] = $row;
}
foreach ($array as $areacode) {
$subString = substr($phonenumber, 0, strlen($areacode));
if ($subString == $areacode) {
$phone = $subString." ".substr($phonenumber, strlen($areacode));
}
}
if (!empty($phone)) {
echo $phone;
}
else {
echo "No AreaCode found.";
}
?>
这里发生的事情是您将数据作为关联数组 "mysqli_fetch_assoc" 获取。
所以每个 $row
实际上都是这样的数组:
array("Areacode"=>"0349"); //or whatever the code is
您可以执行以下操作:
foreach ($array as $areacode) {
$subString = substr($phonenumber, 0, strlen($areacode["areacode"]));
if ($subString == $areacode) {
$phone = $subString." ".substr($phonenumber, strlen($areacode));
}
}
或使用“mysqli_fetch_array
”代替“mysqli_fetch_assoc
”