Как найти четное число php

What is the simplest most basic way to find out if a number/variable is odd or even in PHP?
Is it something to do with mod?

I’ve tried a few scripts but.. google isn’t delivering at the moment.

Tim Cooper's user avatar

Tim Cooper

157k38 gold badges327 silver badges279 bronze badges

asked Oct 31, 2011 at 20:17

user1022585's user avatar

2

You were right in thinking mod was a good place to start. Here is an expression which will return true if $number is even, false if odd:

$number % 2 == 0

Works for every integerPHP value, see as well Arithmetic OperatorsPHP.

Example:

$number = 20;
if ($number % 2 == 0) {
  print "It's even";
}

Output:

It’s even

Francisco Luz's user avatar

answered Oct 31, 2011 at 20:18

Tim Cooper's user avatar

Tim CooperTim Cooper

157k38 gold badges327 silver badges279 bronze badges

7

Another option is a simple bit checking.

n & 1

for example:

if ( $num & 1 ) {
  //odd
} else {
  //even
}

answered Feb 5, 2012 at 23:10

Pawel Dubiel's user avatar

Pawel DubielPawel Dubiel

18.4k3 gold badges40 silver badges58 bronze badges

4

Yes using the mod

$even = ($num % 2 == 0);
$odd = ($num % 2 != 0);

answered Oct 31, 2011 at 20:19

Aaron W.'s user avatar

Aaron W.Aaron W.

9,2442 gold badges33 silver badges45 bronze badges

While all of the answers are good and correct, simple solution in one line is:

$check = 9;

either:

echo ($check & 1 ? 'Odd' : 'Even');

or:

echo ($check % 2 ? 'Odd' : 'Even');

works very well.

answered May 9, 2016 at 15:58

Tarik's user avatar

TarikTarik

4,22037 silver badges35 bronze badges

1

(bool)($number & 1)

or

(bool)(~ $number & 1)

answered Jan 16, 2013 at 10:16

Olegs's user avatar

OlegsOlegs

811 silver badge1 bronze badge

4

I did a bit of testing, and found that between mod, is_int and the &-operator, mod is the fastest, followed closely by the &-operator.
is_int is nearly 4 times slower than mod.

I used the following code for testing purposes:

$number = 13;

$before = microtime(true);
for ($i=0; $i<100000; $i++) {
    $test = ($number%2?true:false);
}
$after = microtime(true);

echo $after-$before." seconds mod<br>";

$before = microtime(true);
for ($i=0; $i<100000; $i++) {
    $test = (!is_int($number/2)?true:false);
}
$after = microtime(true);

echo $after-$before." seconds is_int<br>";

$before = microtime(true);
for ($i=0; $i<100000; $i++) {
    $test = ($number&1?true:false);
}
$after = microtime(true);

echo $after-$before." seconds & operator<br>";

The results I got were pretty consistent. Here’s a sample:

0.041879177093506 seconds mod
0.15969395637512 seconds is_int
0.044223070144653 seconds & operator

answered Aug 22, 2013 at 10:15

Ruben Coolen's user avatar

Ruben CoolenRuben Coolen

3761 gold badge5 silver badges13 bronze badges

2

Another option is to check if the last digit is an even number :

$value = "1024";// A Number
$even = array(0, 2, 4, 6, 8);
if(in_array(substr($value, -1),$even)){
  // Even Number
}else{
  // Odd Number
}

Or to make it faster, use isset() instead of array_search :

$value = "1024";// A Number
$even = array(0 => 1, 2 => 1, 4 => 1, 6 => 1, 8 => 1);
if(isset($even[substr($value, -1)]){
  // Even Number
}else{
  // Odd Number
}

Or to make it more faster (beats mod operator at times) :

$even = array(0, 2, 4, 6, 8);
if(in_array(substr($number, -1),$even)){
  // Even Number
}else{
  // Odd Number
}

Here is the time test as a proof to my findings.

answered Oct 10, 2013 at 16:40

Subin's user avatar

SubinSubin

3,4261 gold badge34 silver badges63 bronze badges

8

PHP is converting null and an empty string automatically to a zero. That happens with modulo as well. Therefor will the code

$number % 2 == 0 or !($number & 1)

with value $number = » or $number = null
result in true.
I test it therefor somewhat more extended:

function testEven($pArg){
    if(is_int($pArg) === true){
        $p = ($pArg % 2);
        if($p === 0){
            print "The input '".$pArg."' is even.<br>";
        }else{
            print "The input '".$pArg."' is odd.<br>";
        }
    }else{
        print "The input '".$pArg."' is not a number.<br>";
    }
}

The print is there for testing purposes, hence in practice it becomes:
function testEven($pArg){
    if(is_int($pArg)=== true){
        return $pArg%2;
    }
    return false;
}

This function returns 1 for any odd number, 0 for any even number and false when it is not a number. I always write === true or === false to let myself (and other programmers) know that the test is as intended.

answered Jun 1, 2015 at 8:12

Loek Bergman's user avatar

Loek BergmanLoek Bergman

2,17220 silver badges18 bronze badges

7

All even numbers divided by 2 will result in an integer

$number = 4;
if(is_int($number/2))
{
   echo("Integer");
}
else
{
   echo("Not Integer");
}

answered Jul 5, 2012 at 19:39

David S.'s user avatar

1

I am making an assumption that there is a counter already in place. in $i which is incremented at the end of a loop, This works for me using a shorthand query.

$row_pos = ($i & 1) ? 'odd' : 'even';

So what does this do, well it queries the statement we are making in essence $i is odd, depending whether its true or false will decide what gets returned. The returned value populates our variable $row_pos

My use of this is to place it inside the foreach loop, right before i need it, This makes it a very efficient one liner to give me the appropriate class names, this is because i already have a counter for the id’s to make use of later in the program. This is a brief example of how i will use this part.

<div class='row-{$row_pos}'> random data <div>

This gives me odd and even classes on each row so i can use the correct class and stripe my printed results down the page.

The full example of what i use note the id has the counter applied to it and the class has my odd/even result applied to it.:

$i=0;
foreach ($a as $k => $v) {

    $row_pos = ($i & 1) ? 'odd' : 'even';
    echo "<div id='A{$i}' class='row-{$row_pos}'>{$v['f_name']} {$v['l_name']} - {$v['amount']} - {$v['date']}</div>n";

$i++;
}

in summary, this gives me a very simple way to create a pretty table.

answered Jul 13, 2014 at 19:28

CodingInTheUK's user avatar

Try this,

$number = 10;
 switch ($number%2)
 {
 case 0:
 echo "It's even";
 break;
 default:
 echo "It's odd";
 }

answered May 24, 2016 at 23:59

Sajjad Hossain's user avatar

1

$before = microtime(true);

$n = 1000;  
$numbers = range(1,$n);

$cube_numbers = array_map('cube',$numbers);

function cube($n){      
    $msg ='even';       
    if($n%2 !=0){
        $msg = 'odd';
    }               
    return "The Number is $n is ".$msg;
}

foreach($cube_numbers as $cube){
    echo $cube . "<br/>";
}

$after = microtime(true);

echo $after-$before. 'seconds';

answered Feb 13, 2016 at 9:39

user2610558's user avatar

$number %2 = 1 if odd… so don’t have to use not even…

$number = 27;

if ($number % 2 == 1) {
  print "It's odd";
}

answered Apr 7, 2021 at 15:28

jxwd's user avatar

jxwdjxwd

1792 silver badges6 bronze badges

<?php
// Recursive function to check whether
// the number is Even or Odd 
function check($number){
    if($number == 0)
        return 1;
    else if($number == 1)
        return 0;
    else if($number<0)
        return check(-$number);
    else
        return check($number-2);        
}
  
// Check the number odd or even
$number = 35;
if(check($number))
    echo "Even";
else
    echo "Odd";
?>

So, the output will be Odd

answered Aug 20, 2021 at 10:52

Balaji's user avatar

BalajiBalaji

271 silver badge7 bronze badges

1

Using Bit Manipulation:
In this method, you will find bit-wise AND of the number with 1. If the bit-wise AND is 1, then the number is odd, else even.

function odd($var){
    return $var & 1;
}
function even($var){
    return !($var&1);
}
$arr = range(1,10);

echo "Odd Numbers: ";
echo "<pre>";
    print_r(array_filter($arr2, 'odd'));
echo "<pre>";

echo "<br>Even Numbers: ";
echo "<pre>";
    print_r(array_filter($arr2, 'even'));
echo "</pre>";

The output will be:

Odd Numbers:
Array
(
    [0] => 1
    [2] => 3
    [4] => 5
    [6] => 7
    [8] => 9
)

Even Numbers: 
Array
(
    [1] => 2
    [3] => 4
    [5] => 6
    [7] => 8
    [9] => 10
)

answered Nov 3, 2022 at 11:54

Rashed Hasan's user avatar

Rashed HasanRashed Hasan

3,70910 gold badges40 silver badges81 bronze badges

1

//checking even and odd
$num =14;

$even = ($num % 2 == 0);
$odd = ($num % 2 != 0);

if($even){
    echo "Number is even.";
} else {
    echo "Number is odd.";
}

answered Apr 19, 2018 at 6:55

Imran Azim's user avatar

Imran AzimImran Azim

1541 silver badge8 bronze badges

1

Try this one with #Input field

<?php
    //checking even and odd
    echo '<form action="" method="post">';
    echo "<input type='text' name='num'>n";
    echo "<button type='submit' name='submit'>Check</button>n";
    echo "</form>";

    $num = 0;
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      if (empty($_POST["num"])) {
        $numErr = "<span style ='color: red;'>Number is required.</span>";
        echo $numErr;
        die();
      } else {
          $num = $_POST["num"];
      }


    $even = ($num % 2 == 0);
    $odd = ($num % 2 != 0);
    if ($num > 0){
        if($even){
            echo "Number is even.";
        } else {
            echo "Number is odd.";
        }
    } else {
        echo "Not a number.";
    }
    }
?>

answered Apr 19, 2018 at 9:40

Imran Azim's user avatar

Imran AzimImran Azim

1541 silver badge8 bronze badges

3

Two simple bitwise functions, returning a 0 for False and 1 for True.

# is_odd: 1 for odd , 0 for even
odd = number & 1

# is_even: 1 for even , 0 for odd
even = number & 1 ^ 1

Syscall's user avatar

Syscall

19.2k10 gold badges36 silver badges52 bronze badges

answered Feb 15, 2022 at 19:18

cinsight's user avatar

Добрый день, ув. Про!
Подскажите пожалуйста, как силами исключительно PHP определить четным или не четным будет число какое-либо число месяца в будущем.
Например, с клавиатуры вводим: 22.08.2015. Как узнать, будет оно четным или нет?

задан 16 мая 2015 в 13:12

anj1817's user avatar

function even($var)
{
    // является ли переданное число четным
    return !($var & 1);
}

ответ дан 15 окт 2019 в 6:40

Daniel Olshev's user avatar

2

Число из даты такого формата можно получить функциями explode() или strtok().
Остаток от деления в РНР получают оператором %

ответ дан 16 мая 2015 в 13:20

Ипатьев's user avatar

ИпатьевИпатьев

20.2k3 золотых знака26 серебряных знаков49 бронзовых знаков

Не уверен правильно ли, но как-то так:

function dateCheker($var)
{
    $date = strtotime($var);
    $day = date('d', $date);

    if ($day % 2 === 0) {
        print "even";
    } else {
        print "odd";
    }
}

dateCheker('23.08.2015');

ответ дан 16 мая 2015 в 13:30

Ihor Tkachuk's user avatar

Ihor TkachukIhor Tkachuk

1,2761 золотой знак8 серебряных знаков12 бронзовых знаков

1

$num = 1; //Число

if($num % 2 === 0)
  echo 'Четное';
else
  echo 'Нечетное';

ответ дан 16 мая 2015 в 13:52

Vamig's user avatar

VamigVamig

334 бронзовых знака

Перейти к содержимому

Проверка числа на четность и нечетность. Введение

Проверка числа на четность и нечетность в phpВ работе, я уже неоднократно сталкивался с необходимостью проверки числа на четность и нечетность, но почему-то не придавал этому особого значения, поэтому не затрагивал данную тему ранее. Но мне уже несколько раз присылали вопросы и просили помочь с задачами, в которых проверка четности числа может помочь в реализации. Поэтому я решил описать проблему и решение в статье.
Рассмотрим самую распространенную задачу, в которой проверка четности числа может все расставить на свои места. Допустим, у нас имеется массив данных, в котором хранится имена и фамилии людей. Необходимо вывести эти данные таким образом, чтобы каждое имя и фамилия начинались с новой строки и каждая вторая строка имела отступ 20 пикселей.

Решение задачи:
Необходимо при выводе каждого элемента массива считать номер элемента, если он четный, то есть 2, 4, 6 и тд, то будем делать отступы.

Проверка числа на четность и нечетность. Код

// массив данных
$array_users = array(
	"Иван Иванов",
	"Иван Петров",
	"Петр Иванов",
	"Петр Петров",
	"Сидор Иванов",
	"Сидор Петров"
);

// вывод данных
$num = 1;
foreach($array_users as $value){
	// проверяем четность
	if(($num % 2) == 0){
		// если четное, то делаем отступ 
		echo "<span style='padding-left: 20px;'>$value</span><br/>";
	}else{
		// если не четное, то просто выводим
		echo "<span>$value</span><br/>";
	}
	$num ++;
}

Задача решена.

Вся суть сводится к тому, что необходимо проверить остаток от деления числа на два. если остаток равен нулю, значит число четное.

$a = 5;
if(($a % 2) == 0){
	echo "Число четное";
}else{
	echo "Число не четное";
}

С помощью такого же кода, можно добавлять стили для каждого третьего, каждого четвертого и тд элемента, только уже сравнивать остаток после деления на 2, 3, 4 и тд.

«четное/нечетное число php«. Определим с помощью php является ли число четным либо нечетным!

Подробно о четном/нечетном числе в php/

  1. Определяем в php четное число:
  2. Выполнение кода проверки четного/нечетного числа php 2
  3. Функция определения четного/нечетного числа php
  1. Определяем в php четное число:

    Не буду повторять, что такое четное число смотрим здесь.
    Из выше изложенной ссылке вы узнали, что любое число, которое делится без остатка на 2 будет четным, для этого вам понадобится php и:

    Немного теории о делении без остатка в php.

    Если вы прочитали выше приведенную теорию, то узнали, что если вы напишите вот такую конструкцию:

    if(«ваше число» % 2 == 0) echo ‘число четное определено php’;

    else echo ‘число не четное определено php’;

    Примеры определения четного/нечетного числа php

    Теперь, в примере рассмотрим код определения «четного/нечетного числа php«, возьмем выше приведенный код и заменим ваше число на … например на 2:

    <?
    if(2 % 2 == 0) echo 'число четное определено php';
    else echo 'число не четное определено php';
    ?>

    Выполнение кода проверки четного/нечетного числа php

    Разместим выше приведенный код прямо здесь:

    число четное определено php

    Аналогичный пример кода проверки четного/нечетного числа php

    Используем число 3:


    <?
    if(3 % 2 == 0) echo 'число четное определено php';
    else echo 'число не четное определено php';
    ?>

    Выполнение кода проверки четного/нечетного числа php

    число не четное определено php

  2. Выполнение кода проверки четного/нечетного числа php 2

    И второй пример определения четности/нечетности числа php… нахождение точки в случае деления с остатком… для этого вам понадобится:

    Условие if.

    Поиск совпадений -substr_count;

    + добавим знак «собачки @», потому, что «substr_count» выдает ошибку если не находит…

    Простой код поиска четности, т.е. точки в числе…

    Код проверки четности/нечетности числа php:

    <?

    $var = 1.5;

    if(@substr_count($var , '.')) echo 'число не четное определено php';

    else echo 'число четное определено php';

    ?>

    Выполнение кода проверки четного/нечетного числа php

    Далее выведем данный код прямо здесь:

    число не четное определено php

    Код №2 проверки четности/нечетности числа php:

    Второй пример… возьмем тот же код и в переменную поместим число 2:

    <?

    $var = 2;

    if(@substr_count($var , '.')) echo 'число не четное определено php';

    else echo 'число четное определено php';

    ?>

    Выполнение кода проверки четного/нечетного числа php

    Определяем число 2 будет ли четным/нечетным:

    число четное определено php

  3. Функция определения четного/нечетного числа php

    Если вам часто приходится определять — это четное/нечетное число в php? то вма нужна функция, которая сомжет это сделать и не нужно на каждое число писать выше приведенный код

    Пример функции определения четного/нечетного числа php

    <?

    function isEven($e)

    {

    $e = $e/2;

    if(substr_count($e, '.')) return 'число не четное определено php ';

    else return 'число четное определено php ';

    }

    echo 'Число 2 : ' .isEven(2) ;

    echo 'Число 3 : ' .isEven(3) ;

    ?>

    Выведем результат работы функции определения четного/нечетного числа php

    Число 2 : число четное определено php

    Число 3 : число не четное определено php

Не благодарите, но ссылкой можете поделиться!

COMMENTS+

 
BBcode


При написании кода в PHP есть задачи, которые встречаются чаще остальных или просто как-то выделяются из общего множества. В этой статье поговорим о некоторых из них.

Тут собрана лишь малая часть, и наверное это не последняя статья на тему несложных популярных задачек в PHP. Кроме того, я планирую дополнять эту статью…

В общем, не буду никого ни за что тянуть и перейду сразу к кодам, которые, я надеюсь, будут полезны новичкам: кто что для себя найдет — все ваше smile

Короткая запись операторов присваивания

Когда нужно что-то прибавить, отнять или объединить, то для краткости можно использовать сокращения в операторе = — операторе присваивания:

// полная запись, а под ней тоже самое только кратко
$a = $a + 1;  $a = $a + 5;  $a = $a - $b;  $a = $a . 'текст';
$a++;         $a += 5;      $a -= $b;      $a .= 'текст';

Время выполнения PHP скрипта

Build In Post

Иногда бывает нужно замерить время выполнения отельного куска кода в PHP. Сделать это не сложно, ниже разберемся как.

Простой вариант

Замерить скорость выполнения какой-то отдельной его части PHP кода, можно с помощью встроенной в PHP функции microtime( true ). Функция вернет UNIX штамп времени в микросекундах. Параметр true говорит функции вернуть число, а не строку, чтобы можно было потом просто отнять одно число от другого.

Логика проста: сначала замеряем текущее время в микросекундах, выполняем код, опять замеряем текущее время и высчитываем разницу времени — эта разница и будет временем выполнения кода. С помощью функции sprintf() форматируем результат в более читаемый формат.

$start = microtime( true );

get_bloginfo( 'homeurl' ); // какой-то код

$diff = sprintf( '%.6f sec.', microtime( true ) - $start );

echo "Время выполнения: $diff"; // Время выполнения: 0.000014 sec.

Вариант посложнее

Для измерения скорости работы PHP кода, когда-то написал такую функцию:

/**
 * Считает время выполнения PHP кода (в секундах).
 *
 *     exec_time();
 *     // код
 *     echo exec_time('get') .' сек.'; //> 0.03654 сек.
 *
 * @version 3.4.5
 *
 * @param string $phase       run             - включает подсчет: первый раз или после паузы (по умолчанию).
 *                            start           - очищает все кэши и включает подсчет - clear & run.
 *                            get             - получает разницу, между предыдущим вызовом функции.
 *                            getall|end|stop - получает разницу, между первым вызовом функции (run).
 *                            pause           - временная остановка подсчета. exec_time() для продолжения.
 *                            clear           - полностью очищает результат. exec_time() для начала нового подсчета.
 * @param int    $round       До скольки знаков после запятой округлять результат.
 *
 * @return float|void Example 0.03654
 */
function exec_time( $phase = 'run', $round = 6 ){
	static $prev_time, $collect;

	if( 'start' === $phase ){
		$collect = $prev_time = 0;
	}
	elseif( 'clear' === $phase ){
		return $collect = $prev_time = 0;
	}

	list( $usec, $sec ) = explode( ' ', microtime() );
	$mctime = bcadd( $usec, $sec, 8 );

	if( $prev_time ){
		$exectime = $mctime - $prev_time; // bcsub( $mctime, $prev_time, 8 );
		$collect  += $exectime; // bcadd( $collect, $exectime, 8 );
	}
	$prev_time = $mctime;

	if( 'pause' === $phase ){
		$prev_time = 0;
	}
	elseif( 'get' === $phase ){
		return round( $exectime, $round );
	}
	elseif( false !== strpos( 'getall end stop', $phase ) ){
		return round( $collect, $round );
	}
}

Если замеряете отдельные быстрые функции, например: __(), то можно повторять выполнение для наглядности. Например, замерим работу __():

exec_time();

for( $i=1; $i<50000; $i++ ){
	$r = __( 'Settings', 'default' );
}

echo exec_time('get') .'сек.'; // 0.51650 сек.

Округление дробных чисел

Округление до целых

Чтобы округлить число в php существует несколько функций:

  • round($num) — округляет число в большую или меньшую сторону в зависимости от значения дробной части. Если дробная часть больше или равна пяти, то округлит в большую сторону, иначе в меньшую.

  • ceil($num) — независимо от дробной части, округляет в большую сторону.

  • floor($num) — независимо от дробной части, округляет в меньшую сторону.
// round
echo round( 5.2 ); //> 5
echo round( 5.5 ); //> 6
echo round( 5.6 ); //> 6

// ceil
echo ceil( 5.1 );  //> 6

// floor
echo floor( 5.9 ); //> 5

Округление до дробных

Для округления чисел, до определенного количество знаков после запятой, используем функцию round(). Во втором параметре нужно указать сколько оставить знаков после запятой.

echo $round = round( 5.555, 1 ); //> 5.6

echo $round = round( 5.555, 2 ); //> 5.56

Округление последнего числа происходит как в математики: если следующее больше или равно 5 то в большую сторону, в остальных случаях в меньшую…

Целая часть и остаток от деления чисел

Чтобы получить целую часть от деления можно воспользоваться функцией intval() или префиксом (int).

$celoe = intval(5 / 2); //> 2
$celoe = (int) (5 / 2); //> 2

Чтобы получить остаток от деления можно воспользоваться оператором %:

$ostatok = (5 % 2); //> 1

Четное число или нет — проверка в PHP (остаток от деления)

Чтобы узнать четное число или нет, нужно разделить его на 2 и проверить нет ли остатка… А для определения остатка от деления используется арифметический оператор — %.

$a = 11;

// есть остаток
if ( $a % 2 ) {
	echo '$a не четное';
}
// нет остатка
else {
	echo '$a четное';
}

Получаем остаток:

$ostatok = 5 % 2; //> 1
$ostatok = 4 % 2; //> 0
$ostatok = 10 % 6; //> 4

Числа кратные к N или каждый N-ый блок в цикле

Нужно разделить число на число и если остатка нет, то первое число делиться нацело на второе, а значит кратное.

$num = 21;
$n   = 3;
if( ! ($num % $n) ){
	echo "$num кратно $n";
}

Где применить эту кратность?

Допустим, есть цикл записей и нужно к каждому третьему блоку добавить отдельный css класс. Тут-то кратность нам и поможет.

$i = 1;
foreach( $posts a $post ){
	if( ! ($i++ % 3) ){
		// каждый третий блок в цикле
	}
}

Форматирование чисел (денег) в PHP

Для удобного восприятия числа или денежные велечины, лучше выводить с разеделением тысячных групп. Например 9864 понятнее смотрится так: 9 864. Для такого форматирования в PHP есть готовые фукнции:

number_format( $number, $decimals = 0 )
number_format( $number, $decimals = 0, $dec_point = ‘.’ , $thousands_sep = ‘,’ )

Форматирует число с разделением групп.

  • number(обязательный)
    Число, которое нужно отформатировать.

  • decimals
    Сколько знаков после запятой показывать.

  • dec_point
    Разделитель для дробной части.

  • thousands_sep
    Разделитель тысяч.
// английский формат (по умолчанию)
echo number_format( 5555 ); //> 5,555

// русский формат
echo number_format( 5555, 0, ',', ' '); //> 5 555

// французский формат
echo number_format( 5555.55, 2, ',', ' '); //> 5 555,55

Для вывода денежных величин используйте похожую функцию money_format()

Как получить ключи или значения ассоциативного PHP массива

Чтобы получить только ключи или только значения ассоциативного массива можно воспользоваться двумя php функциями: array_keys() и array_values(). Они возвращают простой индексный массив, содержащие все ключи или значения соответственно.

$array = array(
	'key_1' => 'val_1',
	'key_2' => 'val_2',
	'key_3' => 'val_3',
	'key_4' => 'val_4',
	'key_5' => 'val_5'
);

// получение всех ключей массива
$keys = array_keys( $array );
/* Array(
	[0] => key_1
	[1] => key_2
	[2] => key_3
	[3] => key_4
	[4] => key_5
)*/

// получение всех значений массива
$values = array_values( $array );
/* Array(
	[0] => val_1
	[1] => val_2
	[2] => val_3
	[3] => val_4
	[4] => val_5
)*/

Это может пригодится когда нужно сделать поиск по ключам массива. В PHP такой встроенной функции нет.

Создаем массив из диапазона чисел или букв

Допустим, нужно заполнить пустой массив элементами: числами от 1 до 5 или буквами от a до f.

На такой случай в php есть функция range( $start, $end, $step = 1 ). Она принимает два обязательных и один не обязательный параметр. Обязательные, указывают диапазон, из которого будет заполнен массив, а необязательный определяет шаг между элементами.

$array = range(1, 10);
/* Array(
	[0] => 1
	[1] => 2
	[2] => 3
	[3] => 4
	[4] => 5
	[5] => 6
	[6] => 7
	[7] => 8
	[8] => 9
	[9] => 10
)*/

$array = range(5, -5, 2);
/* Array(
	[0] => 5
	[1] => 3
	[2] => 1
	[3] => -1
	[4] => -3
	[5] => -5
)*/

$array = range('a', 'f');
/* Array(
	[0] => a
	[1] => b
	[2] => c
	[3] => d
	[4] => e
	[5] => f
)*/

$array = range('z', 'a', 3);
/* Array(
	[0] => z
	[1] => w
	[2] => t
	[3] => q
	[4] => n
	[5] => k
	[6] => h
	[7] => e
	[8] => b
)*/

Как получить максимальное или минимальное число из массива в PHP

Для определения максимального и минимального числа в php есть две удобные функции: min() и max(). Они могут принимать любое количество чисел и возвращать минимальное или максимально из них.

Также можно передать массив из чисел, тогда мин. или макс. число будет выбрано из значений массива.

// Пример 1
$min = min( 1, 6 ); //> 1
$max = max( 1, 6 ); //> 6

// Пример 2
$min = min( 1, 2, -5, 6, 0, -8, 7 ); //> -8
$max = max( 1, 2, -5, 6, 0, -8, 7 ); //> 7

// Пример 3 - массивы
$min = min( [1, 6] ); //> 1
$max = max( [1, 6] ); //> 6

Как получить часть строки (подстроку)

Чтобы получить подстроку можно использовать: substr(), iconv_substr() или mb_substr().

Все эти функции одинаковые, если нужно обрабатывать латиницу. А отличия начинаются когда нужно обработать например кириллицу или другой язык, тут подходят только: mb_substr() и iconv_substr(), потому что в них можно указать кодировку и они работают с символами в указанной кодировке.

Однако нужно знать, что скорость их работы в разы ниже: substr() работает с одинаковой скоростью для строки любой длинны. А вот mb_substr() и iconv_substr() работают тем медленнее чем длине строка в них указывается… В среднем они в 5-10 раз медленнее, однако альтернатив нет, если нужно обработать кириллицу, придется использовать их…

// синтаксис:
// mb_substr ( $string, $start, $length, $encoding )

$str = "Поиск текстов";

// 3 символа начиная с третьего (отсчет идет от нуля)
$sub_1 = mb_substr( $str, 2, 3 ); // обычно кодировку указывать не обязательно...

// Берем подстроку, начиная с первого символа и до третьего с конца
$sub_2 = mb_substr( $str, 6, -2, 'utf-8' );

// результат
echo $sub_1 .' - '. $sub_2; //> бой - текст

Всевозможные варианты:

// Латиница
$str = 'abcdef';

echo substr( $str, 1);     // bcdef
echo substr( $str, 1, 3);  // bcd
echo substr( $str, 0, 4);  // abcd
echo substr( $str, 0, 8);  // abcdef
echo substr( $str, -1, 1); // f

// Кириллица
$str = 'абвгдеж';

echo mb_substr( $str, 1);     // бвгдеж
echo mb_substr( $str, 1, 3);  // бвг
echo mb_substr( $str, 0, 4);  // абвг
echo mb_substr( $str, 0, 8);  // абвгдеж
echo mb_substr( $str, -1, 1); // ж

// с указанием кодировки, обычно это не обязательно
echo mb_substr( $str, 1, null, 'utf-8'); // бвгдеж
echo mb_substr( $str, 1, 3, 'utf-8');    // бвг
echo mb_substr( $str, 0, 4, 'utf-8');    // абвг
echo mb_substr( $str, 0, 8, 'utf-8');    // абвгдеж
echo mb_substr( $str, -1, 1, 'utf-8');   // ж

// iconv_substr(), обычно для нее нужно указать кодировку
// iconv_* медленнее чем mb_*
echo iconv_substr( $str, 1, 9999999, 'utf-8'); // бвгдеж
echo iconv_substr( $str, 1, 3, 'utf-8');       // бвг
echo iconv_substr( $str, 0, 4, 'utf-8');       // абвг
echo iconv_substr( $str, 0, 8, 'utf-8');       // абвгдеж
echo iconv_substr( $str, -1, 1, 'utf-8');      // ж

Количество символов в строке

Чтобы посчитать количество символов в строке есть три функции: strlen(), mb_strlen() и iconv_strlen(). Первая это родная функция PHP и она будет правильно работать только для латиницы. Две другие функции работают на основе подключаемого расширения для PHP и нужны для подсчета кириллицы или других языков. В них можно указать кодировку строки.

$str = 'Короткая строка.'; // тут 16 символов

// узнаем длину строки
echo strlen( $str ); // > 30

echo mb_strlen( $str ); // > 16
echo mb_strlen( $str, 'utf-8' ); // > 16

// iconv_* медленнее чем mb_*
echo iconv_strlen( $str ); // > 30
echo iconv_strlen( $str, 'utf-8' ); // > 16

Как посчитать сколько раз встречается одна строка в другой

Чтобы получить количество подстрок входящих в другую строку, можно воспользоваться двумя функциями: substr_count() и mb_substr_count() — для кириллицы.

$str = 'исходная строка для примера подсчета подстрок';
$sub_str = 'стр'; // искомая подстрока

// подсчет
$count    = substr_count( $str, $sub_str );            //> 2
$mb_count = mb_substr_count( $str, $sub_st );          //> 2
$mb_count = mb_substr_count( $str, $sub_str, "UTF-8"); //> 2

Удаление символов внутри строки

Сделать это можно многими способами, но самый простой это функция str_replace():

$str = 'Короткая строка.';

// заменим слово
echo str_replace( 'Короткая', 'Длинная', $str ); //> Длинная строка.

// удалим точку
echo str_replace( '.', '', $str ); //> Короткая строка

Удаление символов на концах строки

Чтобы прочистить концы строки от пробелов, табов и переносов есть функция trim(). Но не все знают что этой функции можно передать второй параметр, чтобы удалить с концов строки указанный символ.

Также, не все знают что есть аналогичные функции:

  • rtrim() — удаляет только справа строки
  • ltrim() — удаляет только слева строки
Удаление пустых символов на концах строки
$str = '     Короткая строка.  ';

// Удалим все пустые символы: таб, пробел, перенос
echo trim( $str ); // 'Короткая строка.'

// Удалим все пустые символы справа
echo rtrim( $str ); // '   Короткая строка.'

// Удалим слева
echo ltrim( $str ); // 'Короткая строка.  '
Удаление указанных символов в начале и конце строки
$str = '1122Короткая строка.2211';

// Удалим один символ
echo trim( $str, '1' ); // '22Короткая строка.22'

// Удалим несколько символов
echo trim( $str, '12' ); // 'Короткая строка.'
echo trim( $str, '21' ); // 'Короткая строка.'

// тоже самое только на концах строки

// Удалим справа
echo rtrim( $str, '1' ); // '1122Короткая строка.22'
echo rtrim( $str, '21' ); // '1122Короткая строка.'

// Удалим слева
echo ltrim( $str, '1' ); // '22Короткая строка.2211'
echo ltrim( $str, '21' ); // 'Короткая строка.2211'

Как перевернуть строку в PHP

Для вывода строки в обратном (реверсивном) порядке есть функция strrev(). Но, как и многие функции она не умеет работать с кириллицей. Альтернативных функций, вроде mb_strlen() нет. Поэтому давайте создадим свою:

// исходная строка
$string_lat = 'some string';
$string_cry = 'какая-то строка';

// переворачиваем
echo strrev( $string_lat ); //> gnirts emos

// переворачиваем строку в кодировке UTF-8
$mb_strrev = '';
for( $i = mb_strlen($string_cry, "UTF-8"); $i >= 0; $i-- ){
	$mb_strrev .= mb_substr( $string_cry, $i, 1, "UTF-8" );
}

echo $mb_strrev; //> акортс от-яакак

День недели и месяц по-русски на PHP

В php, функция date(), умеет выводить дату и время в огромном количестве форматов, но, к сожалению, вывод по-русски не предусмотрен. Поэтому для вывода дня недели или месяца по-русски, необходимо написать свою функцию.

Месяц по-русски

/**
 * функция для получения названия месяца по-русски.
 *
 * @param  integer [$num_month = false] Номер месяца, необязательный параметр, если параметр не задан,
 *                                      то функция вернет название текущего месяца.
 * @return string Название месяца
 */
function get_rus_month( $num_month = 0 ) {
	// если не задан номер месяца
	if( ! $num_month ) {
		$num_month = date('n'); // номер текущего месяца
	}

	// массив с названиями месяцев
	$monthes = array('', 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');

	return $monthes[ $num_month ];
}

// пример использования
echo get_rus_month(1); // Январь
echo get_rus_month();  // Апрель

День недели

## получает день недели по-русски
function get_rus_day(){
	 $days = array('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота' );

	// номер дня недели: с 0 до 6. 0 - воскресенье, 6 - суббота
	$num_day = date('w');

	return $days[ $num_day ];
}

// пример использования
echo get_rus_day(); //> Среда

Есть что добавить? Милости прошу в комментарии…

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти в корзине удалившие файлы
  • Как найди диспетчер задач
  • Как найти двигатель на алиэкспресс
  • Как в ворде найти квадрат с галочкой
  • Как исправить документы за прошлый период

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии