/    Sign up×
Community /Pin to ProfileBookmark

Do you see anything wrong with this foreach loop ?
If not, then why I get error ?
I got 4 foreach loops. First two are ok. Last two causing this same type of error.
Following is my third foreach loop where I get error.

[code]
if(ISSET($ignored_links))
{
$ignored_links_count = count($ignored_links);
echo ‘Ignored Links Count: ‘ .$ignored_links_count; echo ‘<br>’;
}
echo ‘Ignored Links: ‘; echo ‘<br>’;
if($ignored_links_count>=1)
{
//On this Crawling S ssion, atleast one Scraped Link has been discarded.
foreach($ignored_links as $ignored_link)
{
//Display a List of all Discarded Links.
echo __LINE__; echo ‘<br>’;
echo $ignored_link; echo ‘<br>’; //”Notice Array to String Conversion” error on this line.
echo ‘<br>’;
}
}
[code]

to post a comment
PHP

16 Comments(s)

Copy linkTweet thisAlerts:
@developer_webauthorFeb 15.2021 — Folks,

Here is my fourth foreach loop where I get same error like mentioned on my previous post.

<i>
</i>if(ISSET($harvested_links))
{
$harvested_links_count = count($harvested_links);
echo 'Harvested Links Count: ' .$harvested_links_count; echo '&lt;br&gt;';
}
echo 'Harvested Links: '; echo '&lt;br&gt;';
if($harvested_links_count&gt;=1)
{
//On this Crawling Session, atleast one Link has been Scraped and Indexed.
foreach($harvested_links as $harvested_link)
{
//Display a List of all Indexed Links.
echo __LINE__; echo '&lt;br&gt;';
echo $harvested_link; echo '&lt;br&gt;'; //"Notice Array to String Conversion" error on this line.
echo '&lt;br&gt;';
}
}
}


Notice: Array to string conversion in /storage/emulated/0/htdocs/template_notes/Bot_Template.php on line 149

Array
Copy linkTweet thisAlerts:
@developer_webauthorFeb 15.2021 — Folks,

I checked with var_dump.

Both $ignored_links and $harvested_links are arrays.

Hence, I never should've got those errors.

Here is my full code so far.

Run it through on your localhost and see for yourself why you get the error.

Note the var_dump() I have commented out.

Run it like that first as a test and see if you can reproduce the two errors or not that I mentioned above.

After that, run it by uncommenting the var_dump and see for yourself why you go in an infinite loop.

Puzzling!

I tested it on my localhost.

It only has 3 files.

1.html

2.html

3.html

Each of these three links only link to each other.

Hence the crawler ends it's crawl after crawling these three links. That is providing the var_dump codes at the bottom of the code is commented-out. Test and see for yourselves.

However, when you uncomment the var_dump codes at the bottom of my crawler's source code, the car_dump infinitely starts generating code as if gone in a loop. Why is that ?

Big mystery for two nights now!

It is a simple webcrawler.

You submit your URL.

It lists in: $links_to_visit = array().

It navigates to the first array value (your submitted link) and scrapes all links found on the initially crawled page.

Scrapes to array:

$scraped_links[].

It checks each Scraped link for duplicates.

Meaning, it hecks if it has already been Scraped or not.

It checks against the arrays:

$links_to_visit[].

$visited_links[].

We don't want to list the same link more than once on the first array. Else, the crawler will be crawling the same link more than once.

And we don't want to list the same link more than once either on the second link. Else, the crawler will be crawling links already crawled.

Scraped links that pass this duplicate entry test, get listed in array $links_to_visit[] for crawling.

When crawler moves onto the next link in the crawling list ($links_to_visit[]), it lists the currently crawled link to the array $visited_links[].

The same steps repeat on the second page.

And so on for all the remaining pages.

<i>
</i>&lt;?php
require('Conn_Template.php');
include('Error_Reporting_Template.php');
include('simplehtmldom_1_9_1/simple_html_dom.php');
?&gt;

&lt;!DOCTYPE html&gt;
&lt;form method="POST" action="&lt;?php echo $_SERVER['PHP_SELF'];?&gt;"&gt;
&lt;fieldset&gt;
&lt;label for="url"&gt;Url:&lt;/label&gt;
&lt;input type="text" name="url" id="url" value="&lt;?php if(ISSET($_POST['url'])) { echo $_POST['url']; }elseif(ISSET($_GET['url'])) { echo $_GET['url']; } ?&gt;" required&gt;
&lt;br&gt;
&lt;/fieldset&gt;
&lt;fieldset&gt;
&lt;input type="submit" name="fetch" id="fetch" value="Fetch"&gt;
&lt;/fieldset&gt;
&lt;/form&gt;

&lt;?php

$links_to_visit = array();
$visited_links = array();
$scraped_links = array();
$harvested_links[] = array();
$ignored_links[] = array();

if($_SERVER['REQUEST_METHOD']=="POST")
{
//Check if URL has been input or not
if(!ISSET($_POST['url']))
{
die('Error 1: Internal Error!');
}
elseif($_POST['url']=='')
{
die('Error 2: Input Ur!');
}
elseif(ISSET($_POST['url']) &amp;&amp; $_POST['url']!='');
{
$url = $_POST['url'];
$links_to_visit[0] = $url;
}
}

//Visit the Submitted Link plus all links scraped.j
foreach($links_to_visit as $link_to_visit)
{
$html = file_get_html("$link_to_visit");
$visited_links[] = $link_to_visit;

<i> </i>//Scrape all Links found in the Visited Page.
<i> </i>foreach($html-&gt;find('a') as $element)
<i> </i>{
<i> </i> $scraped_links[] = $element;
<i> </i> echo __LINE__; echo '&lt;br&gt;';
<i> </i>}
<i> </i>
<i> </i>//Check if Scraped Link already scraped before or not.
<i> </i>foreach($scraped_links as $scraped_link)
<i> </i>{
<i> </i> if(!in_array($scraped_link,$visited_links) &amp;&amp; (!in_array($scraped_link,$links_to_visit)))
<i> </i> {
<i> </i> //Scraped Link is new.
<i> </i> $links_to_visit[] = $scraped_link;
<i> </i> $harvested_links[] = $scraped_link;
<i> </i> }
<i> </i> elseif(in_array($scraped_link,$visited_links) &amp;&amp; (!in_array($scraped_link,$links_to_visit)))
<i> </i> {
<i> </i> //Scraped Link already scraped before.
<i> </i> $ignored_links[] = $scraped_link;
<i> </i> }
<i> </i>
<i> </i> //Add current Visited Page to "Visited Links" list to avoid any further visit to it.
<i> </i> $visited_links[] = $link_to_visit;
<i> </i> echo __LINE__; echo '&lt;br&gt;';
<i> </i>}
<i> </i>
<i> </i>//Display Stats from this point ohnwards
<i> </i>if(ISSET($visited_links))
<i> </i>{
<i> </i> $visited_links_count = count($visited_links); echo '&lt;br&gt;';
<i> </i> echo 'Visited Links: '; echo '&lt;br&gt;';
<i> </i>}
<i> </i>if($visited_links_count&gt;=1)
<i> </i>{
<i> </i> //On this Crawling Session, atleast one link has been crawled.
<i> </i> foreach($visited_links as $visited_link)
<i> </i> {
<i> </i> //Disay a List of all Crawled Links
<i> </i> echo __LINE__; echo '&lt;br&gt;';
<i> </i> echo $visited_link; echo '&lt;br&gt;';
<i> </i> echo '&lt;br&gt;';
<i> </i> }
<i> </i>}
<i> </i>
<i> </i>if(ISSET($scraped_links))
<i> </i>{
<i> </i> $scraped_links_count = count($scraped_links);
<i> </i> echo 'Found Links Count: ' .$scraped_links_count; echo '&lt;br&gt;';
<i> </i>}
<i> </i>echo 'Found Links: '; echo '&lt;br&gt;';
<i> </i>if($scraped_links_count&gt;=1)
<i> </i>{
<i> </i> //On this Crawling Session, atleast one Link has been Scraped.
<i> </i> foreach($scraped_links as $scraped_link)
<i> </i> {
<i> </i> //Display a List of all Scraped Links.
<i> </i> echo __LINE__; echo '&lt;br&gt;';
<i> </i> echo $scraped_link; echo '&lt;br&gt;';
<i> </i> echo '&lt;br&gt;';
<i> </i> }
<i> </i>}
<i> </i>
<i> </i>if(ISSET($ignored_links))
<i> </i>{
<i> </i> $ignored_links_count = count($ignored_links);
<i> </i> echo 'Ignored Links Count: ' .$ignored_links_count; echo '&lt;br&gt;';
<i> </i>}
<i> </i>echo 'Ignored Links: '; echo '&lt;br&gt;';
<i> </i>if($ignored_links_count&gt;=1)
<i> </i>{
<i> </i> //On this Crawling S ssion, atleast one Scraped Link has been discarded.
<i> </i> foreach($ignored_links as $ignored_link)
<i> </i> {
<i> </i> //Display a List of all Discarded Links.
<i> </i> echo __LINE__; echo '&lt;br&gt;';
<i> </i> echo $ignored_link; echo '&lt;br&gt;'; //"Notice Array to String Conversion" error on this line.
<i> </i> echo '&lt;br&gt;';
<i> </i> }
<i> </i>}
<i> </i>
<i> </i>if(ISSET($harvested_links))
<i> </i>{
<i> </i> $harvested_links_count = count($harvested_links);
<i> </i> echo 'Harvested Links Count: ' .$harvested_links_count; echo '&lt;br&gt;';
<i> </i>}
<i> </i>echo 'Harvested Links: '; echo '&lt;br&gt;';
<i> </i>if($harvested_links_count&gt;=1)
<i> </i>{
<i> </i> //On this Crawling Session, atleast one Link has been Scraped and Indexed.
<i> </i> foreach($harvested_links as $harvested_link)
<i> </i> {
<i> </i> //Display a List of all Indexed Links.
<i> </i> echo __LINE__; echo '&lt;br&gt;';
<i> </i> echo $harvested_link; echo '&lt;br&gt;'; //"Notice Array to String Conversion" error on this line.
<i> </i> echo '&lt;br&gt;';
<i> </i> }
<i> </i>}
}

/*
var_dump($ignored_link);
echo '&lt;br&gt;';
var_dump($harvested_link);
echo '&lt;br&gt;';
var_dump($ignored_links);
echo '&lt;br&gt;';
var_dump($harvested_links);
*/
?&gt;


You will need the simplehtmldom to test my code.
Copy linkTweet thisAlerts:
@NogDogFeb 15.2021 — > @developer_web#1628010 Both $ignored_links and $harvested_links are arrays.

> Hence, I never should've got those errors.


No, that's why you got those errors. You are trying to echo an array, but echo is for strings. That's why the description at https://www.php.net/manual/en/function.echo.php shows a type of string before each argument in the prototype:

> Description
>
> echo ( string $arg , string ...$args ) : void
Copy linkTweet thisAlerts:
@viakgroupFeb 16.2021 — The foreach loop is only applicable to arrays and is used to traverse each key/value pair in the array. syntax.

The forEach method calls the function once for each element in the array in sequence. Note: Do not perform this function on array elements that have no value.
Copy linkTweet thisAlerts:
@developer_webauthorFeb 19.2021 — @NogDog#1628021

NogDog,

How am I trying to echo an array ?

I am trying to echo a value of an array.

Look, $harvested_links is an array. Not trying to echo that whole array. $harvested_link is a value of the array. Trying to echo that. Note the plural and singular mentioned in the two variables.

<i>
</i>foreach($harvested_links as $harvested_link)
{
echo $harvested_link;
}


How am I trying to echo the array above ?
Copy linkTweet thisAlerts:
@developer_webauthorFeb 19.2021 — @viakgroup#1628029

I shouldn't use foreach loop on an empty array value ?

And just how am I supposed to know if a value is empty or not without using the foreach loop ?

To determine if a value is empty or not, I would use foreach loop like so:

1
<i>
</i>foreach($array as $value)
{
if(strlen($value)!=0)
echo $value:
}



2.
<i>
</i>foreach($array as $value)
{
if(strlen($value)&gt;1)
echo $value:
}



3.
<i>
</i>foreach($array as $value)
{
if($value != "")
echo $value:
}


4.
<i>
</i>foreach($array as $value)
{
if($value)=='NULL')
echo $value:
}




5.
<i>
</i>foreach($array as $value)
{
if(!empty($value))
echo $value:
}

Not sure if the last two will work or not as I don't usually use them.

My point is, I have to use the foreach loop to findout if the value is empty or not.

Or you suggest I use other loops instead like DoWhile, For, etc. ?
Copy linkTweet thisAlerts:
@developer_webauthorFeb 19.2021 — @Semprevivum,

@NogDog,

Can you check my 5 codes on my last post and rank them according to your own choices where top best on top and least on bottom ?

My own rankings:

3

2

1

4

5
Copy linkTweet thisAlerts:
@developer_webauthorFeb 19.2021 — Actually, there more ways to check than the above 5 codes. Here are two more I reckon are ok but you fellows can enlighten me if they will work or not to check whether foreach item is blank or not.

6.
<i>
</i>foreach($array as $value)
{
if($value))
echo $value:
}


7.
<i>
</i>foreach($array as $value)
{
if(strlen($value)!==0)
echo $value:
}


I made a mistake in number 4 above and so correcting it here:

4.
<i>
</i>foreach($array as $value)
{
if($value) != 'NULL')
echo $value:
}
Copy linkTweet thisAlerts:
@developer_webauthorFeb 19.2021 — Folks,

It seems in all my 7 samples, I used a colon than a semi colon. Typo. Opened this thread via my smart fone. Hard to type on fones. Plus nowadays I see fuzzy texts. Will need glasses.
Copy linkTweet thisAlerts:
@developer_webauthorFeb 27.2021 — @NogDog,

I replied to your misunderstanding. You said I was trying to echo an array. I corrected you that I was trying to echo a value of an array. Not the whole array. And so shouldn't have got the error

Do check my code again and see for yourself.
Copy linkTweet thisAlerts:
@developer_webauthorFeb 27.2021 — @Sempervivum

Why do you think I getting the error when trying to echo a value of an array via the foreach loop ?
Copy linkTweet thisAlerts:
@SempervivumFeb 27.2021 — I viewed the code in your 1st and 2nd posting. The note says that you are trying to echo an array and therefore an array to string conversion was performed. Obviously $ignored_link is an array. Verify this by outputting it by var_dump:
Copy linkTweet thisAlerts:
@developer_webauthorFeb 27.2021 — @Sempervivum#1628650

No $ignored_link was not an array.

$ignored_links was.

Note the singular and plural here.
<i>
</i>foreach($ignored_links as $ignored_link)
{
if($ignored_link != '')
{
echo 'Ignored Links: ' .$ignored_link .'&lt;br&gt;';
}
}


Problem was, when I defined the array $ignored_links and $harvested_links, I made mistakes. Hence the error. Mistake was this:
<i>
</i>$harvested_links[] = array();
$ignored_links[] = array();

Note the []. They not supposed to be there.

Just spotted this error now.

Thread maybe closed.
Copy linkTweet thisAlerts:
@SempervivumFeb 27.2021 — >Note the singular and plural here.

I did 😀

This code:

`$harvested_links[] = array();</C><br/>
creates a two dimensional array where <C>
$harvested_links[0]`
is an **array**.
Copy linkTweet thisAlerts:
@developer_webauthorFeb 27.2021 — @Sempervivum#1628652

  • 1. So how did that become an array ?


  • Here is the full source code. Run it on localhost and tell me how $ignored_link and $harvested_link became arrays.

    <i>
    </i>&lt;?php
    require('Conn_Template.php');
    include('Error_Reporting_Template.php');
    include('simplehtmldom_1_9_1/simple_html_dom.php');
    ?&gt;

    &lt;!DOCTYPE html&gt;
    &lt;form method="POST" action="&lt;?php echo $_SERVER['PHP_SELF'];?&gt;"&gt;
    &lt;fieldset&gt;
    &lt;label for="url"&gt;Url:&lt;/label&gt;
    &lt;input type="text" name="url" id="url" value="&lt;?php if(ISSET($_POST['url'])) { echo $_POST['url']; }elseif(ISSET($_GET['url'])) { echo $_GET['url']; } ?&gt;" required&gt;
    &lt;br&gt;
    &lt;/fieldset&gt;
    &lt;fieldset&gt;
    &lt;input type="submit" name="fetch" id="fetch" value="Fetch"&gt;
    &lt;/fieldset&gt;
    &lt;/form&gt;

    &lt;?php

    $links_to_visit = array();
    $visited_links = array();
    $scraped_links = array();
    $harvested_links[] = array();
    $ignored_links[]= array();

    if($_SERVER['REQUEST_METHOD']=="POST")
    {
    //Check if URL has been input or not
    if(!ISSET($_POST['url']))
    {
    die('Error 1: Internal Error!');
    }
    elseif($_POST['url']=='')
    {
    die('Error 2: Input Ur!');
    }
    elseif(ISSET($_POST['url']) &amp;&amp; $_POST['url']!='');
    {
    $url = $_POST['url'];
    $links_to_visit[0] = $url;
    }
    }

    //Visit the Submitted Link plus all links scraped.j
    foreach($links_to_visit as $link_to_visit)
    {
    $html = file_get_html("$link_to_visit");
    $visited_links[] = $link_to_visit;

    <i> </i>//Scrape all Links found in the Visited Page.
    <i> </i>foreach($html-&gt;find('a') as $element)
    <i> </i>{
    <i> </i> $scraped_links[] = $element;
    <i> </i> echo __LINE__; echo '&lt;br&gt;';
    <i> </i>}
    <i> </i>
    <i> </i>//Check if Scraped Link already scraped before or not.
    <i> </i>foreach($scraped_links as $scraped_link)
    <i> </i>{
    <i> </i> if(!in_array($scraped_link,$visited_links) &amp;&amp; (!in_array($scraped_link,$links_to_visit)))
    <i> </i> {
    <i> </i> //Scraped Link is new.
    <i> </i> $links_to_visit[] = $scraped_link;
    <i> </i> $harvested_links[] = $scraped_link;
    <i> </i> }
    <i> </i> elseif(in_array($scraped_link,$visited_links) &amp;&amp; (!in_array($scraped_link,$links_to_visit)))
    <i> </i> {
    <i> </i> //Scraped Link already scraped before.
    <i> </i> $ignored_links[] = $scraped_link;
    <i> </i> }
    <i> </i>
    <i> </i> //Add current Visited Page to "Visited Links" list to avoid any further visit to it.
    <i> </i> $visited_links[] = $link_to_visit;
    <i> </i> echo __LINE__; echo '&lt;br&gt;';
    <i> </i>}
    <i> </i>
    <i> </i>//Display Stats from this point onwards
    <i> </i>if(ISSET($visited_links))
    <i> </i>{
    <i> </i> $visited_links_count = count($visited_links); echo '&lt;br&gt;';
    <i> </i> echo 'Visited Links: '; echo '&lt;br&gt;';
    <i> </i>}
    <i> </i>if($visited_links_count&gt;0)
    <i> </i>{
    <i> </i> //On this Crawling Session, atleast one link has been crawled.
    <i> </i> foreach($visited_links as $visited_link)
    <i> </i> {
    <i> </i> //Disay a List of all Crawled Links
    <i> </i> echo __LINE__; echo '&lt;br&gt;';
    <i> </i> echo $visited_link; echo '&lt;br&gt;';
    <i> </i> echo '&lt;br&gt;';
    <i> </i> }
    <i> </i>}
    <i> </i>
    <i> </i>if(ISSET($scraped_links))
    <i> </i>{
    <i> </i> $scraped_links_count = count($scraped_links);
    <i> </i> echo 'Found Links Count: ' .$scraped_links_count; echo '&lt;br&gt;';
    <i> </i>}
    <i> </i>echo 'Found Links: '; echo '&lt;br&gt;';
    <i> </i>if($scraped_links_count&gt;0)
    <i> </i>{
    <i> </i> //On this Crawling Session, atleast one Link has been Scraped.
    <i> </i> foreach($scraped_links as $scraped_link)
    <i> </i> {
    <i> </i> //Display a List of all Scraped Links.
    <i> </i> echo __LINE__; echo '&lt;br&gt;';
    <i> </i> echo $scraped_link; echo '&lt;br&gt;';
    <i> </i> echo '&lt;br&gt;';
    <i> </i> }
    <i> </i>}
    <i> </i>
    <i> </i>if(ISSET($ignored_links))
    <i> </i>{
    <i> </i> $ignored_links_count = count($ignored_links);
    <i> </i> echo 'Ignored Links Count: ' .$ignored_links_count; echo '&lt;br&gt;';
    <i> </i>}
    <i> </i>echo 'Ignored Links: '; echo '&lt;br&gt;';
    <i> </i>if($ignored_links_count&gt;0)
    <i> </i>{
    <i> </i> //On this Crawling S ssion, atleast one Scraped Link has been discarded.
    <i> </i> foreach($ignored_links as $ignored_link)
    <i> </i> {
    <i> </i> //Display a List of all Discarded Links.
    <i> </i> echo __LINE__; echo '&lt;br&gt;';
    <i> </i> echo $ignored_link; echo '&lt;br&gt;'; //"Notice Array to String Conversion" error on this line.
    <i> </i> echo '&lt;br&gt;';
    <i> </i> }
    <i> </i>}
    <i> </i>
    <i> </i>if(ISSET($harvested_links))
    <i> </i>{
    <i> </i> $harvested_links_count = count($harvested_links);
    <i> </i> echo 'Harvested Links Count: ' .$harvested_links_count; echo '&lt;br&gt;';
    <i> </i>}
    <i> </i>echo 'Harvested Links: '; echo '&lt;br&gt;';
    <i> </i>if($harvested_links_count&gt;=1)
    <i> </i>{
    <i> </i> //On this Crawling Session, atleast one Link has been Scraped and Indexed.
    <i> </i> foreach($harvested_links as $harvested_link)
    <i> </i> {
    <i> </i> //Display a List of all Indexed Links.
    <i> </i> echo __LINE__; echo '&lt;br&gt;';
    <i> </i> echo $harvested_link; echo '&lt;br&gt;'; //"Notice Array to String Conversion" error on this line.
    <i> </i> echo '&lt;br&gt;';
    <i> </i> }
    <i> </i>}
    }


    var_dump($ignored_link);
    echo '&lt;br&gt;';
    var_dump($harvested_link);
    echo '&lt;br&gt;';
    var_dump($ignored_links);
    echo '&lt;br&gt;';
    var_dump($harvested_links);

    ?&gt;


    @NogDog

    You try too. It should satisfy your curiosity how I am building a webcrawler.
    Copy linkTweet thisAlerts:
    @SempervivumFeb 28.2021 — The var_dumps at the end of the code are telling us what's going on:
    ``D:Gemeinsame DateienWebentwicklungthread588_developer_web_scraper.php:149:<i>
    </i>array (size=1)
    0 =&gt;
    array (size=0)
    empty

    D:Gemeinsame DateienWebentwicklungthread588_developer_web_scraper.php:151:
    array (size=3)
    0 =&gt;
    array (size=0)
    empty
    1 =&gt;
    object(simple_html_dom_node)[19]
    public 'nodetype' =&gt; int 1
    public 'tag' =&gt; string 'a' (length=1)
    public 'attr' =&gt;
    array (size=1)
    'href' =&gt; string 'link.html' (length=53)
    public 'children' =&gt;
    array (size=0)
    empty
    public 'nodes' =&gt;
    ... shortend here

    2 =&gt;
    object(simple_html_dom_node)[23]
    public 'nodetype' =&gt; int 1
    public 'tag' =&gt; string 'a' (length=1)
    public 'attr' =&gt;
    array (size=1)
    'href' =&gt; string 'link.html' (length=97)
    public 'children' =&gt;
    array (size=0)
    empty
    public 'nodes' =&gt;
    ... shortened here<i>
    </i>
    `</CODE>
    The first element is an empty array, entered by the faulty line<br/>
    <C>
    $harvested_links[] = array();</C><br/>
    The next elements are objects containing information about the a-tags. As the __toString method is implemented, when echoing such object an a-tag is output like this:<br/>
    <C>
    &lt;a href="http://link.html"&gt;link text&lt;/a&gt;`
    ×

    Success!

    Help @developer_web spread the word by sharing this article on Twitter...

    Tweet This
    Sign in
    Forgot password?
    Sign in with TwitchSign in with GithubCreate Account
    about: ({
    version: 0.1.9 BETA 5.20,
    whats_new: community page,
    up_next: more Davinci•003 tasks,
    coming_soon: events calendar,
    social: @webDeveloperHQ
    });

    legal: ({
    terms: of use,
    privacy: policy
    });
    changelog: (
    version: 0.1.9,
    notes: added community page

    version: 0.1.8,
    notes: added Davinci•003

    version: 0.1.7,
    notes: upvote answers to bounties

    version: 0.1.6,
    notes: article editor refresh
    )...
    recent_tips: (
    tipper: @AriseFacilitySolutions09,
    tipped: article
    amount: 1000 SATS,

    tipper: @Yussuf4331,
    tipped: article
    amount: 1000 SATS,

    tipper: @darkwebsites540,
    tipped: article
    amount: 10 SATS,
    )...