Hướng dẫn dùng session loops.com trong PHP

Being unable to find an actual copy of mod_files.sh, and seeing lots of complaints/bug fix requests for it, here's one that works.  It gets all its parameters from PHP.INI, so you don't have the opportunity to mess up:

#!/bin/bash
#
# Creates directories for PHP session storage.
# Replaces the one that "comes with" PHP, which [a] doesn't always come with it
# and [b] doesn't work so great.
#
# This version takes no parameters, and uses the values in PHP.INI [if it
# can find it].
#
# Works in OS-X and CentOS [and probably all other] Linux.
#
# Feb '13 by Jeff Levene.

[[ $# -gt 0 ]] && echo "$0 requires NO command-line parameters.
It gets does whatever is called for in the PHP.INI file [if it can find it].
" && exit 1

# Find the PHP.INI file, if possible:
phpIni=/usr/local/lib/php.ini                        # Default PHP.INI location
[[ ! -f "$phpIni" ]] && phpIni=/etc/php.ini            # Secondary location
[[ ! -f "$phpIni" ]] && phpIni=                        # Found it?

# Outputs the given [as $1] parameter from the PHP.INI file:
# The "empty" brackets have a SPACE and a TAB in them.
#
PhpConfigParam[] {
    [[ ! "$phpIni" ]] && return
    # Get the line from the INI file:
    varLine=`grep "^[     ]*$1[     ]*=" "$phpIni"`

    # Extract the value:
    value=`expr "$varLine" : ".*$1[     ]*=[     ]*['\"]*\[[^'\"]*\]"`
    echo "$value"
    }

if [[ "$phpIni" ]]
then
    savePath=`PhpConfigParam session.save_path`
    # If there's a number and semicolon at the front, remove them:
    dirDepth=`expr "$savePath" : '\[[0-9]*\]'`
    [[ "$dirDepth" ]] && savePath=`expr "$savePath" : '[0-9]*;\[.*\]'` || dirDepth=0
    bits=`PhpConfigParam session.hash_bits_per_character`
    case "x$bits" in
        x]    echo "hash_bits_per_character not defined.  Not running." ; exit 2 ;;
        x4] alphabet='0 1 2 3 4 5 6 7 8 9 a b c d e f' ;;
        x5] alphabet='0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v' ;;
        x6] alphabet='0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v'
            alphabet="$alphabet w x y z A B C D E F G H I J K L M N O P Q R S T U V W"
            alphabet="$alphabet X Y Z - ,"
            ;;
        *]    echo "unrecognized hash_bits_per_character.  Not running." ; exit 2 ;;
    esac
else
    echo "Cannot find the PHP.INI file.  Not running.  Sorry."
    exit 2
fi

# The depth of directories to create is $1.  0 means just create the named
# directory.  Directory to start with is $2.
#
# Used recursively, so variables must be "local".

doDir[] {
    local dir="$2"
    if [[ -d "$dir" ]]
    then
        echo "Directory '$dir' already exists.  No problem."
    elif [[ -f "$dir" ]]
    then
        echo "FILE '$dir' exists.  Aborting." ; exit 2
    else
        if mkdir "$dir"
        then
            echo "Directory '$dir' created."
        else
            echo "Cannot create directory '$dir'.  Aborting." ; exit 2
        fi
    fi
    chmod a+rwx "$dir"
    if [[ $1 -gt 0 ]]
    then
        local depth=$[[ $1 - 1 ]]
        for letter in $alphabet
        do    doDir $depth "$dir/$letter"
        done
    fi
    }

echo "Running with savePath='$savePath', dirDepth=$dirDepth, and bitsPerCharacter=$bits."
sleep 3

#!/bin/bash
#
# Creates directories for PHP session storage.
# Replaces the one that "comes with" PHP, which [a] doesn't always come with it
# and [b] doesn't work so great.
#
# This version takes no parameters, and uses the values in PHP.INI [if it
# can find it].
#
# Works in OS-X and CentOS [and probably all other] Linux.
#
# Feb '13 by Jeff Levene.
0

#!/bin/bash
#
# Creates directories for PHP session storage.
# Replaces the one that "comes with" PHP, which [a] doesn't always come with it
# and [b] doesn't work so great.
#
# This version takes no parameters, and uses the values in PHP.INI [if it
# can find it].
#
# Works in OS-X and CentOS [and probably all other] Linux.
#
# Feb '13 by Jeff Levene.
1

Lưu ý: Cần tránh trường hợp luôn luôn là true sẽ dẫn đến vòng lặp vô hạn. Cũng có những trường hợp cần vòng lặp vô hạn nhưng không nhiều trường hợp như vậy. Lúc này, cần cân nhắc kỹ trước khi sử dụng vòng lặp vô hạn.

Sau khi đã học xong câu lệnh rẽ nhánh trong PHP thì phần tiếp theo không thể thiếu trong lập trình nói chung và với PHP nói riêng sẽ là vòng lặp. Và đương nhiên chúng ta cần biết vòng lặp nó là cái quái gì?

1, Vòng lặp là gì?

- Vòng lặp là một chuỗi sự kiện, hành động được lặp đi lặp lại theo một nguyên tắc nhất định. Ví dụ như vong lặp của con người: sinh-lão-bệnh-tử.

-Và đối với PHP nó hỗ trợ chúng ta 4 kiểu vòng lặp[loop] là for, foreach, while và do-while.

2, Vòng lặp for.

-Đây là loại vòn lặp phổ biết nhất trong lập trình:

Cú Pháp:

for [bienkhoitao; dieukienthucthi; buocnhay] { 
    // code...
}

Trong đó:

  • bienkhoitao: là giá trị khởi tạo ban đầu của vòng lặp.
  • dieukienthucthi: là điều kiện mà vòng lặp được phép chạy[chú ý: Nếu bạn muốn lặp vô tận thì có thể bỏ trống].
  • buocnhay: là khoảng đệm nhảy của mỗi vòng lặp.

Để cho dễ hiểu chúng ta cùng xét ví dụ sau nhé:

-Ở bài toán trên tôi đã cho khởi tạo vòng lặp chạy từ 1 cho đến 10: và cứ mỗi một lần lặp thì in ra dòng chữ : 'tôi đang chạy đến số' + số mà vòn lặp chạy tới.

Khi chạy đoạn code trên thì kết quả trả về như sau:

Tôi đang chạy đến số 0
Tôi đang chạy đến số 1
Tôi đang chạy đến số 2
Tôi đang chạy đến số 3
Tôi đang chạy đến số 4
Tôi đang chạy đến số 5
Tôi đang chạy đến số 6
Tôi đang chạy đến số 7
Tôi đang chạy đến số 8
Tôi đang chạy đến số 9
Tôi đang chạy đến số 10

3, Vòng lặp foreach.

-Đây là một loại vòng lặp rất là hay dùng để lặp mảng, object và chính vì điều này nên nó sẽ được sử dụng rất nhiều về sau.

Cú pháp:

hoặc nếu không muốn lặp key của mảng, object.

Trong đó:

  • $variable: Là biến mà các bạn muốn lặp [có thể là array, object].
  • $key: Là các key của mảng hoặc properties của object.
  • $value: Là giá trị của mảng,object.

Để cho dễ hiểu thì mọi người cùng xem qua VD sau rồi tự đưa ra kết luận nhé.

Và Kết quả trình duyệt trả về sẽ có dạng như sau:

Đây là phần tử có key = 0 và có giá trị= A 
Đây là phần tử có key = 1 và có giá trị= B 
Đây là phần tử có key = 2 và có giá trị= C 
Đây là phần tử có key = 3 và có giá trị= D 
_________________________________________________________________ 
Giá trị phần tử= A 
Giá trị phần tử= B 
Giá trị phần tử= C 
Giá trị phần tử= D 

4, For và foreach lồng.

-Cũng giống như trong câu lệnh rẽ nhánh, vòng lặp cũng hoàn toàn có thể lồng nhau được.

For

VD: vẽ tam giác vuông bằng vòng lặp for.

Foreach

VD: duyệt mảng 2 chiều với vòng foreach lồng nhau:

5, Lời kết.

-Qua phần trên mình đã giới thiệu với mọi người 2 dạng vòng lặp trong tổng số 4 dạng vòng lặp mà PHP hỗ trợ, phần tiếp theo mình sẽ giới thiệu tiếp về 2 dạng vòng lặp còn lại.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Đăng Ký

PHP Cơ Bản

Bài trước  Bài sau

4 comments 505 likes

Vũ Thanh Tài

About author

The best way to learn is to share

Xem tất cả bài đăng

Bài Viết Mới

  • Những tính năng mới trong PHP 8.1

    1 năm trước 7 Comments

  • Bài 39: Cache trong Laravel 8

    2 năm trước 1 Comments

  • PHP Swoole là gì? nó có gì mạnh?

    2 năm trước 0 Comment

  • Cài đặt SSL trên local sử dụng mkcert

    2 năm trước 4 Comments

4 Comments

Hi! Bạn

Thank bài viết của bạn rất nhiều, rất bổ ích cho các bạn đang tự học. Mình có góp ý nhỏ thôi trong ví dụ vòng lặp for sẽ ko có dòng "Tôi đang chạy đến số 0" vì theo biến khời tạo bạn đưa ra là bắt đầu từ 1. 

Chủ Đề