Trang 2 / 3 FirstFirst 123 LastLast
Hiển thị kết quả từ 11 đến 20 / 24
  1. #11
    Tham gia
    08-01-2007
    Bài viết
    566
    Like
    0
    Thanked 2 Times in 2 Posts
    mình cũng có 1 câu hỏi tương tư như của bạn chủ thớt, cho mình hỏi nha:

    _ URL, biến ID = x

    Giờ mình code như thế nào để khi chạy thì nó sẽ thêm 1 link gán cho biến ID tăng lên 1

    VD:

    <?php

    $id = $GET_URL;
    $x = $id;
    $x++;

    echo "<a href=?id=$x";

    ?>

    Tức là file mình chạy, nó get data từ 1 site khác, mỗi lần get 1 record
    Cụ thể. Site cần lấy là www.abc.com/1.php?id=2
    File mình code nó sẽ lấy nội dung record ID=2 đó load trong 1 iFrame, cuối trang kèm thêm 1 link khác ( file code của mình ) với ID=3 ... tương tự tới ID=n

    Bác nào rành code cho mình code hoàn chỉnh nha .

    thanks

  2. #12
    Tham gia
    25-07-2006
    Location
    127.0.0.1
    Bài viết
    120
    Like
    1
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi học lập trình View Post
    Vâng em hiểu chỗ này là thực hiện --$d trước :

    3.$d = $d + --$d // $d = $d(1)+ --$d

    Thế nhưng còn cái $d(1) thứ nhất thì làm sao nó bằng 42 được anh
    Bạn phải hiểu bản chất của việc khai báo biến được dùng trong các NNLT.

    Biến là 1 cái tên: đại diện, tham chiếu cho 1 (nhiều) ô nhớ nào đó. (Trong ngôn ngữ cấp thấp, mình làm việc với từng ô nhớ)

    VD ở trên: Khi khai báo biến $d có nghĩa là ta đang truy xuất đến 1 ô nhớ X (giả sử) nào đó của bộ nhớ. Và như vậy, khi ta dùng biến $d có nghĩa là ta đang truy xuất đến giá trị được lưu trữ trong ô nhớ X.

    $d += --$d;
    Bạn đã hiểu đúng là: $d = $d + --$d;
    Và bạn cũng đã hiểu phép toán -- nó được ưu tiên thực hiện trước.

    $d = $d + --$d;
    ở câu lệnh này: --$d được thực hiện trước vậy ô nhớ X ($d đang tham chiếu) sẽ nhận giá trị 42.
    cho nên: giá trị cuối cùng $d nhận giá trị 84.

    Quote Được gửi bởi học lập trình View Post
    Nếu em viết như thế này thì nó xử lý như thế nào :
    <?php
    $d = 42;
    $d--;
    $d+=$d++;
    ?>
    Ở đây bạn phải hiểu rõ hơn về thứ tự ưu tiên, cách toán tử ++, -- thực hiện như thế nào.
    Code:
    <?php
    	$d = 42; //dòng 1
    	$d--;    //dòng 2       
    	$d +=$d++; // tương đương với: $d = $d + $d++;	//dòng 3
    	echo $d;   //dòng 4
    ?>
    dòng 1: $d = 42; giả sử $d tham chiếu đến ô nhớ X => ô nhớ X = 42
    dòng 2: $d giảm ngay 1 đơn vị. => X = 41
    dòng 3: $d = $d + $d++;
    ____thực hiện $d + $d, rồi gán tổng này cho $d, rồi sau đó $d sẽ tăng lên 1 đơn vị
    ____nghĩa là: lấy giá trị ô nhớ X + giá trị ô nhớ X, sau đó gán tổng này cho ô nhớ X, => X = 82, rồi tăng ô nhớ X lên 1 đơn vị => ô nhớ X = 83

    Được sửa bởi jdkhang lúc 11:37 ngày 05-09-2010

  3. #13
    Tham gia
    26-07-2010
    Bài viết
    670
    Like
    0
    Thanked 3 Times in 2 Posts
    Chỉ có mấy cái toán tử mà vấn đề càng phức tạp nhỉ

  4. #14
    Tham gia
    16-05-2010
    Bài viết
    32
    Like
    0
    Thanked 0 Times in 0 Posts
    - Cái chỗ này : $d = $d + $d++;

    - Cái chỗ $d++ nó làm em khó hiểu ở chỗ nếu ví dụ thế này :

    $d++;

    Thì nó có nghĩa là :

    $d=$d; <======== Tức là dùng giá trị của $d trước
    $d=$d+1; <== Sau đó tăng lên 1 đơn vị và cái này nó lưu vào 1 ô nhớ ( có thể là đưa xuống 1 dòng mới )

    - Và còn cái dòng thứ 2 :

    $d--;

    $d=$d; <======== Tức là dùng giá trị của $d trước
    $d=$d-1; <== Sau đó giảm 1 đơn vị và cái này nó lưu vào 1 ô nhớ

    - Vậy tức là ở dòng thứ 2 này nó dùng giá trị là $d=$d tức là bằng 42 thôi chứ anh và em nghĩ là cái $d=$d-1=41 này nó là bộ nhớ đệm , giá trị của nó được truyền vào biểu thức thứ 3 mới đúng còn ở biểu thức thứ 2 thì nó vẫn là bằng 42 . Nếu dùng --$d thì dòng thứ 2 mới là bằng 41 , còn dùng $d-- thì dòng thứ 2 là 42 và cái giá trị sau khi giảm thì nó đưa vào biểu thức 3 . Vậy đúng ko anh

    - Thì ở dòng thứ 3 : $d = $d + $d++; <== $d= $d + ($d=$d;$d=$d+1

    Cái $d=$d+1 ở trong cái ($d=$d;$d=$d+1) thì nó chuyển xuống dòng như thế này phải ko anh :

    $d=$d+1; <= Nó đây ( còn cái $d=$d + $d; <= cái $d thứ 2 chính là ($d=$d đã tách ra từ ($d=$d;$d=$d+1)) đúng không anh )

    [=========> Bổ sung bài viết <=========]

    Nó phức tạp vì đối với 1 biến chứ nhiều biến khác nhau thì lại dễ hiểu
    Được sửa bởi học lập trình lúc 12:00 ngày 05-09-2010 Reason: Bổ sung bài viết

  5. #15
    Tham gia
    08-04-2010
    Bài viết
    37
    Like
    0
    Thanked 0 Times in 0 Posts
    dùng breakpoint kiểm tra sẻ dễ hiểu hơn

  6. #16
    Tham gia
    15-08-2009
    Bài viết
    133
    Like
    0
    Thanked 0 Times in 0 Posts

    Hạnh phúc

    Quote Được gửi bởi học lập trình View Post
    - Cái chỗ này : $d = $d + $d++;

    - Cái chỗ $d++ nó làm em khó hiểu ở chỗ nếu ví dụ thế này :

    $d++;

    Thì nó có nghĩa là :

    $d=$d; <======== Tức là dùng giá trị của $d trước
    $d=$d+1; <== Sau đó tăng lên 1 đơn vị và cái này nó lưu vào 1 ô nhớ ( có thể là đưa xuống 1 dòng mới )

    - Và còn cái dòng thứ 2 :

    $d--;

    $d=$d; <======== Tức là dùng giá trị của $d trước
    $d=$d-1; <== Sau đó giảm 1 đơn vị và cái này nó lưu vào 1 ô nhớ

    - Vậy tức là ở dòng thứ 2 này nó dùng giá trị là $d=$d tức là bằng 42 thôi chứ anh và em nghĩ là cái $d=$d-1=41 này nó là bộ nhớ đệm , giá trị của nó được truyền vào biểu thức thứ 3 mới đúng còn ở biểu thức thứ 2 thì nó vẫn là bằng 42 . Nếu dùng --$d thì dòng thứ 2 mới là bằng 41 , còn dùng $d-- thì dòng thứ 2 là 42 và cái giá trị sau khi giảm thì nó đưa vào biểu thức 3 . Vậy đúng ko anh

    - Thì ở dòng thứ 3 : $d = $d + $d++; <== $d= $d + ($d=$d;$d=$d+1

    Cái $d=$d+1 ở trong cái ($d=$d;$d=$d+1) thì nó chuyển xuống dòng như thế này phải ko anh :

    $d=$d+1; <= Nó đây ( còn cái $d=$d + $d; <= cái $d thứ 2 chính là ($d=$d đã tách ra từ ($d=$d;$d=$d+1)) đúng không anh )

    [=========> Bổ sung bài viết <=========]

    Nó phức tạp vì đối với 1 biến chứ nhiều biến khác nhau thì lại dễ hiểu
    Bạn không hiểu việc ưu tiên thực hiện các toán tử à.
    Ví dụ a+b.c thì b.c thực hiện trước,rôi mới cộng a
    Còn d++ thì nó chỉ việc thực hiện d=d+1//không có thêm toán tử nào khác nên chẳng ưu tiên j
    trong 1 biểu thức,2 toán tử d++ và ++d thì ++d sẽ thực hiện trước so với các toán tử còn lại,d++ thì ngược lại
    Ví dụ bạn trên có nói rồi:
    Code:
    int a=5,b,c;
    b=a++;//gán b=5,sau đó a+1 => b=5,a=6
    c=++a;//tăng a lên 1,rồi gán cho b =>a=b=6;
    Như bài của bạn
    d=d+--d//--d ưu tiên thực hiện trước như ++d =>d=41
    d=41+41=82
    còn d=d+d++//toán tử + thực hiện trước so với d++
    =>d=42+42=84,sau đó d tăng 1 => d = 85
    Nếu int c=d+d++  thì tất nhiên c = 84.

  7. #17
    Tham gia
    16-05-2010
    Bài viết
    32
    Like
    0
    Thanked 0 Times in 0 Posts
    Em thử thế này thì nó in ra kết quả là 42 , các anh thấy sao :

    <?php
    $d=42;
    echo $d++;
    ?>

    Thử thế này thì in ra vẫn 42 :

    <?php
    $d=42;
    echo $d--;
    ?>

  8. #18
    Tham gia
    15-08-2009
    Bài viết
    133
    Like
    0
    Thanked 0 Times in 0 Posts
    Nói với bác thấy mệt quá..Bác có đọc kĩ mấy cái ở trên không vậy.
    thử $d=42;
    echo $++d;
    coi thử nó ra cái gì.

  9. #19
    Tham gia
    16-05-2010
    Bài viết
    32
    Like
    0
    Thanked 0 Times in 0 Posts
    Vâng cái ++$d thì em hiểu rõ rồi nhưng còn cái $d++ cơ , anh thử giải thích code đó :

    <?php
    $d=42;
    echo $d++; // KQ là 42
    ?>

    Chứ thế này thì em biết chắc chắn là 43 rồi vì $d được tăng trước khi tính toán mà :

    <?php
    $d=42;
    echo ++$d; //43
    ?>

  10. #20
    Tham gia
    29-09-2005
    Bài viết
    741
    Like
    14
    Thanked 27 Times in 17 Posts
    Thử cái này đi:
    PHP Code:
    $d=42;
    echo 
    $d++;
    echo 
    $d

Trang 2 / 3 FirstFirst 123 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •