2013-11-29 2 views
0

В настоящее время я работаю над сайтом, где у меня есть массив, который должен содержать 8 значений.заполнение массива array_pad

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

Вот код, я использую

$number=rand(0,255); 

// convert the number to binary and store it as an array 
$states=str_split(decbin($number),1); 
echo '<pre>'.print_r($states,true).'</pre>'; 

// in case the number is not 8 bit long make it an 8 bit number using array_pad 

if(count($states)<8){ 
    $states = array_pad($states,count($states)-8,"0"); 
} 

Проблема заключается в том, что в настоящее время он никогда не заполняет массив, даже если массив состоит только из 3-х или 4-х entrys.

Спасибо за помощь.

Редактировать: Спасибо всем за то, что вы так быстро решили решение, предоставленное Сурешем Камруши.

ответ

1

вместо

$states = array_pad($states,count($states)-8,"0"); 

Попробуйте так:

$number=rand(0,255); 

// convert the number to binary and store it as an array 
$states=str_split(decbin($number),1); 
echo '<pre>'.print_r($states,true).'</pre>'; 

// in case the number is not 8 bit long make it an 8 bit number using array_pad 

if(count($states)<8){ 
    $states = array_pad($states,8,"0"); 
} 
print_r($states); 

PHP скрипку: http://phpfiddle.org/main/code/a1d-m97

+0

Спасибо, это работает, а также спасибо за то, что он так высоко ценит – Kevin

1

Если я правильно понимаю, что вам не нужно count($states) - 8:

$states = array_pad($states, -8, "0"); 

Который будет массировать массив размером до 8, с ведущими нулями

+0

Просто, чтобы знать -8 будет площадку слева и 8 форму справа –

1

Для array_pad второй аргумент - это размер, который вы хотите, чтобы массив был, а не количество элементов, которые вы хотите добавить к нему.

Так просто сделать:

if(count($states)<8){ 
    $states = array_pad($states,8,"0"); 
} 

Или, как array_pad не имеет никакого эффекта, если ваш массив уже достаточно большой, вам даже не нужен if(count($states)<8) часть.

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