Php:Strlen()与count()问题:警告:strlen()期望参数1为字符串,给定数组

时间:2017-10-10 12:59:03

标签: php mysql phone-number

我使用这些代码将电话号码字符串拼接成区号和电话号码。

当我使用" strlen($ areacode)"我得到一个php警告strlen()期望参数1是字符串,给定数组。

当使用count()而不是strlen()时,脚本执行错误。我得到了结果"没有找到AreaCode"。

是什么让我错了?

<?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.";
}
?>

1 个答案:

答案 0 :(得分:1)

这里发生的是你将数据作为关联数组提取&#34; mysqli_fetch_assoc&#34;。 所以每个select VOICE from MERCHANT_MP_CONTACTS where (VOICE not like '%[0-9]%') union select VOICE from MERCHANT_MP_CONTACTS where (VOICE not like '%-%') union select VOICE from MERCHANT_MP_CONTACTS where (VOICE not like '%+%') 实际上都是这样的数组:

$row

您可以执行以下操作:

array("Areacode"=>"0349"); //or whatever the code is

或使用&#34; foreach ($array as $areacode) { $subString = substr($phonenumber, 0, strlen($areacode["areacode"])); if ($subString == $areacode) { $phone = $subString." ".substr($phonenumber, strlen($areacode)); } } &#34;而不是&#34; mysqli_fetch_array&#34;