Hướng dẫn php recursive function return array - mảng trả về hàm đệ quy php

Để tạo chức năng đệ quy với đầu ra, bạn cần ba điều:

  1. Một biến hoặc tham số để giữ vị trí hiện tại, đó là $r trong mã của bạn. Bạn có cái này đúng.
  2. Một biến hoặc một tham số giữ kết quả mà bạn không có. Lúc đầu, nó dường như là $bread, nhưng nó không giữ bất kỳ giá trị nào vì nó trống mỗi khi bạn gọi recursive[]. Một giải pháp đơn giản là tuyên bố nó là global bên trong hàm.
  3. Một tuyên bố if kiểm tra điều kiện dừng mà bạn không có. Thay vào đó, bạn có một vòng lặp do-while trong mã của bạn.

Vì vậy, bạn có hai sai lầm ở đó. Dựa trên mã của bạn và sửa đổi nó càng ít càng tốt, đây là mã chính xác:

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

$bread = array[];
function recursive[$r]
{
    global $bread;

    $bread[] = strval[$r->BrowseNodeId];

    if[isset[$r->Ancestors]]{
        return recursive[$r->Ancestors->BrowseNode];
    }else{
        return array_reverse[$bread];
    }
}

print_r[recursive[$rec]];

Có bạn đi.

Cập nhật: Tôi đồng ý với @flamestorm, global nên tránh nếu có thể. Thay vào đó, tôi cũng nhận được đề xuất sử dụng ____1010, nhưng nó giới thiệu một lỗi. Vì vậy, tôi khuyên bạn nên tránh

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
0 nếu bạn không chắc chắn cách sử dụng nó. I agree with @FlameStorm, global should be avoided if possible. I also received suggestion to use
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
0 instead, but it introduces a bug. Thus, I recommend avoiding
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
0 as well if you're not sure how to use it.

Đây là mã được cải thiện:

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];

Biến $bread bên ngoài hàm không còn cần thiết. Ngoài ra, không sử dụng global hoặc

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
0.

JW ¶

[Php 5, Php 7, Php 8]Apply a user function recursively to every member of an array

Array_Walk_Recursive - Áp dụng chức năng người dùng đệ quy cho mọi thành viên của một mảng

Sự mô tả[array|object

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
5, callable
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
6
, mixed
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
7 =
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
8
]: bool

mảng_walk_recursive [mảng | object
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
5, callable
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
6, hỗn hợp
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
7 =
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
8]: bool

Thông số

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
9

Mảng đầu vào.

a holds apple
b holds banana
sour holds lemon
0

Thông thường,

a holds apple
b holds banana
sour holds lemon
0 có hai tham số. Giá trị của tham số
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
9 là giá trị đầu tiên và khóa/chỉ mục thứ hai.
:

Ghi chú:

Nếu
a holds apple
b holds banana
sour holds lemon
0 cần phải làm việc với các giá trị thực của mảng, hãy chỉ định tham số đầu tiên của
a holds apple
b holds banana
sour holds lemon
0 làm tài liệu tham khảo. Sau đó, bất kỳ thay đổi nào được thực hiện cho các yếu tố đó sẽ được thực hiện trong chính mảng ban đầu.

a holds apple
b holds banana
sour holds lemon
5

Nếu tham số
a holds apple
b holds banana
sour holds lemon
5 tùy chọn được cung cấp, nó sẽ được truyền dưới dạng tham số thứ ba cho
a holds apple
b holds banana
sour holds lemon
0.

Trả về giá trị

a holds apple
b holds banana
sour holds lemon
8 on success or
a holds apple
b holds banana
sour holds lemon
9
on failure.

Trả về
a holds apple
b holds banana
sour holds lemon
8 khi thành công hoặc
a holds apple
b holds banana
sour holds lemon
9 khi thất bại.

Ví dụarray_walk_recursive[] example

$r0

$r1

$r2

Ví dụ #1 Array_Walk_Recursive [] Ví dụ

a holds apple
b holds banana
sour holds lemon

Ví dụ trên sẽ xuất ra:array will not be passed to the function.

Bạn có thể nhận thấy rằng khóa '$r3' không bao giờ được hiển thị. Bất kỳ khóa nào giữ một mảng sẽ không được chuyển đến hàm.

  • Xem thêm

Array_walk [] - Áp dụng chức năng do người dùng cung cấp cho mọi thành viên của một mảng

9 năm trước

$r4

$r5

$r6

$r7

Amoffat tại amoffat dot com ¶

5 năm trước

$r8

$r9

$bread0

$bread1

14 năm trước

4 năm trước

$bread2

$bread3

$bread4

$bread5

JW ¶

[Php 5, Php 7, Php 8]

$bread6

$bread7

$bread8

$bread9

recursive[]0

recursive[]1

$r7

Array_Walk_Recursive - Áp dụng chức năng người dùng đệ quy cho mọi thành viên của một mảng

Sự mô tả

recursive[]3

recursive[]4

$r7

mảng_walk_recursive [mảng | object

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
5, callable
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
6, hỗn hợp
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
7 =
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
8]: bool

Thông số

recursive[]6

recursive[]7

$r7

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
9

Mảng đầu vào.

recursive[]9

global0

global1

$r7

a holds apple
b holds banana
sour holds lemon
0

Sự mô tả

global3

global4

global5

global6

mảng_walk_recursive [mảng | object

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
5, callable
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
6, hỗn hợp
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
7 =
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
8]: bool

5 năm trước

global7

global8

global9

if0

$r7

Thông số

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
9

if2

if3

if4

if5

Mảng đầu vào.

[Php 5, Php 7, Php 8]

if6

if7

global4

if9

do-while0

Ẩn danh ¶

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
9

do-while1

Mảng đầu vào.

a holds apple
b holds banana
sour holds lemon
0

do-while2

do-while3

do-while4

do-while5

do-while6

Thông thường,

a holds apple
b holds banana
sour holds lemon
0 có hai tham số. Giá trị của tham số
$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
9 là giá trị đầu tiên và khóa/chỉ mục thứ hai.

9 năm trước

do-while7

do-while8

$r7

Ghi chú:

Nếu

a holds apple
b holds banana
sour holds lemon
0 cần phải làm việc với các giá trị thực của mảng, hãy chỉ định tham số đầu tiên của
a holds apple
b holds banana
sour holds lemon
0 làm tài liệu tham khảo. Sau đó, bất kỳ thay đổi nào được thực hiện cho các yếu tố đó sẽ được thực hiện trong chính mảng ban đầu.

global0

global1

global2

global3

$r7

a holds apple
b holds banana
sour holds lemon
5

4 năm trước

global5

global6

$r7

SeductiveApps.com

4 năm trước

global8

global9

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
00

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
01

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
02

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
03

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
04

$r7

Ẩn danh ¶

5 năm trước

global7

global8

global9

if0

$r7

Rodrigo Guariento ¶

9 năm trước

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
11

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
12

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
13

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
14

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
15

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
16

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
17

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
18

$r7

Amoffat tại amoffat dot com ¶

14 năm trước

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
20

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
21

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
22

$r7

JW ¶

14 năm trước

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
24

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
25

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
26

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
27

$rec = $result->BrowseNodes->BrowseNode->Ancestors->BrowseNode;

function recursive[$r]
{
    if[isset[$r->Ancestors]]
        $bread = recursive[$r->Ancestors->BrowseNode];

    $bread[] = strval[$r->BrowseNodeId];
    return $bread;
}

print_r[recursive[$rec]];
28

$r7

Bài Viết Liên Quan

Chủ Đề