2012-02-04 3 views
-2

Я получаю эту ошибку с моим текущим кодом PHP:Как преобразовать массив строк в массив целых чисел?

Примечание: TO идентификатор не был целым числом: 1, 2. 1) APNs :: queueMessage ->

Как я могу преобразовать в массив строк в массив целых чисел, как в этом другом вопросе: ID not integer... EasyAPNS?

Я в основном пытается передать id с (из моей базы данных), которое должно newMessage() как в этом примере Apple:

// SEND MESSAGE TO MORE THAN ONE USER 
// $apns->newMessage(array(1,3,4,5,8,15,16)); 
// ($destination contain a string with the Ids like "1,2,3") 

Вот мой код ниже:

if (isset($destination)) 
{ 
    //$destination = 1,2,.. 
    $dest = explode(",", $destination); 
    if (isset($time)) 
    { 
     $apns->newMessage($dest, $time); 
    } 
    else 
    { 
     $apns->newMessage($dest); 
    } 

    $apns->addMessageAlert($message); 
    $apns->addMessageBadge($badge); 
    $apns->addMessageSound('bingbong.aiff'); 
    $apns->queueMessage(); 
    header("location:$url/index.php?success=1"); 
} 
+1

Что? Я не понимаю, в чем вопрос? В чем проблема? – Vyktor

+1

Похож на '$ apns-> queueMessage()' ожидает целочисленный параметр. Но с этой небольшой информацией это всего лишь догадка – knittl

+0

И какова ваша фактическая переменная, установленная (включая эту строку) и включающая в себя ту строку, на которой происходит ошибка на PLS. – Dave

ответ

1

Я бы создал функцию-оболочку, которая принимает массив, а затем вызывает его.

function newMessageArray($array) { 
    foreach ($array as $element) { 
     $apns->newMessage($element); 
    } 
} 

Таким образом, вы можете позвонить newMessageArray() с массивом целых чисел, таких как array(1,2,3,4,5), и все они будут отправлены.

Кроме того, вы должны изменить имена переменных (от $array и $element) к чему-то более содержательному. Я не знаю, что вы пытаетесь сделать, поэтому я не был уверен, какие имена использовать.

+0

Спасибо, что он РАБОТАЕТ! Я начинаю изучать php, поэтому было неясно, в чем была моя проблема, но вы исправили это! Благодаря! – exomic

+0

Если это сработает для вас, отлично! Но ... не суть вашей проблемы в том, что у вас был массив строк, который должен был стать 'int'? Согласно комментариям 'apns' doc, $ apns-> newMessage() уже принимает массив. Просто у вас был массив строк ... вместо ints ... правильно? – summea

0

Ваш вопрос не является ясно, это всего лишь работа с предположениями. Это, кажется, ошибка преобразования целого, попробуйте

$dest = explode(",", $destination); 
$destArray = array(); 
foreach($dest as $key => $val) { 
    $destArray[$key] = intval($val); 
} 

if (isset($time)) 
{ 
    $apns->newMessage($destArray, $time); 
} 
else 
{ 
    $apns->newMessage($destArray); 
} 

Преобразовать где строка не целое число, используя «intval».

0

Я считаю, что вы можете искать в том, как это сделать:

Вы id с в таблице базы данных, не так ли? И вы пытаетесь получить несколько массивов id в массив, чтобы массив можно было использовать в вызове $apns->newMessage(), правильно? (Я проверил the source для этого ...) Но, id s как-то наступают как string s вместо int s.

Таким образом, вы, вероятно, хотите, чтобы просто убедиться, что новый массив состоит из int с, как это:

function to_int($x) { 
    return (int)$x; 
} 

$dest = array_map("to_int", $dest); 

Есть, вероятно, и другие способы сделать это, но таким образом, вы по крайней мере, что у вас есть переменные int в этом массиве. Надеюсь, это поможет!

Смежные вопросы