I am trying to get my image slides to display in order by number with the following:
$image=array();
$img_folder = $params->get('path');
mt_srand((double)microtime()*1000);
if(is_dir($img_folder)){
krsort($file);
$imgs = dir($img_folder);
while ($file = $imgs->read()) {
if ((eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file)))
$image[] = "$file";
} closedir($imgs->handle);
print_r($image);
return $image;
}
However, the array works but the order is off:
Array ( [0] => Slide1.png [1] => Slide10.png [2] => Slide11.png [3] => Slide12.png [4] => Slide13.png [5] => Slide14.png [6] => Slide15.png [7] => Slide16.png [8] => Slide17.png [9] => Slide18.png [10] => Slide19.png [11] => Slide2.png [12] => Slide20.png [13] => Slide21.png [14] => Slide22.png [15] => Slide23.png [16] => Slide24.png [17] => Slide25.png [18] => Slide26.png [19] => Slide27.png [20] => Slide28.png [21] => Slide29.png [22] => Slide3.png [23] => Slide30.png [24] => Slide31.png [25] => Slide4.png [26] => Slide5.png [27] => Slide6.png [28] => Slide7.png [29] => Slide8.png [30] => Slide9.png )
If I put natsort($image); after $image[] = "$file"; the order is correct but the array is off:
Array ( [0] => Slide1.png [11] => Slide2.png [22] => Slide3.png [25] => Slide4.png [26] => Slide5.png [27] => Slide6.png [28] => Slide7.png [29] => Slide8.png [30] => Slide9.png [1] => Slide10.png [2] => Slide11.png [3] => Slide12.png [4] => Slide13.png [5] => Slide14.png [6] => Slide15.png [7] => Slide16.png [8] => Slide17.png [9] => Slide18.png [10] => Slide19.png [12] => Slide20.png [13] => Slide21.png [14] => Slide22.png [15] => Slide23.png [16] => Slide24.png [17] => Slide25.png [18] => Slide26.png [19] => Slide27.png [20] => Slide28.png [21] => Slide29.png [23] => Slide30.png [24] => Slide31.png )
I need them to order Slide1 - Slide30, not like listed above. I could change the names from numeric (Slide1) to alphabetic (SlideA) but would like to keep this naming convention. Is there a way to do this without changing the image names?
This image slide is a "how to" slide show.
NatSort is what you are looking for.
just use natsort($image);
You can reference it at:
http://php.net/manual/es/function.natsort.php
I didn't know about natsort(), this should do it too though..
$imgs = scandir(dir($img_folder));
$sorted = array();
foreach($imgs as $img){
$index = intval(trim($img, "Slide.png"));
$sorted[$index] = $img;
}
ksort($sorted);
$sorted = array_values($sorted);
You can use natsort() function
natsort
e.g.
$array1 = array("img12.png", "img10.png", "img2.png", "img1.png");
natsort($array);
print_r($array);
This way you will get out put is :
Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )
You can also use natcasesort($image). It sort an array using a case insensitive "natural order" algorithm.
This did the trick!!!
Just after
$image[] = "$file";
I added
sort($image, SORT_NATURAL | SORT_FLAG_CASE);
This correctly orders the images in the array and the order:
Array ( [0] => Slide1.png [1] => Slide2.png [2] => Slide3.png [3] => Slide4.png [4] => Slide5.png [5] => Slide6.png [6] => Slide7.png [7] => Slide8.png [8] => Slide9.png [9] => Slide10.png [10] => Slide11.png [11] => Slide12.png [12] => Slide13.png [13] => Slide14.png [14] => Slide15.png [15] => Slide16.png [16] => Slide17.png [17] => Slide18.png [18] => Slide19.png [19] => Slide20.png [20] => Slide21.png [21] => Slide22.png [22] => Slide23.png [23] => Slide24.png [24] => Slide25.png [25] => Slide26.png [26] => Slide27.png [27] => Slide28.png [28] => Slide29.png [29] => Slide30.png [30] => Slide31.png )
Related
First of all, I am using this piece of code in PHP to retrieve data from a database.
DATABASE DATA CODE:
// Database Details
$servername = "localhost";
$username = "admin_testdb";
$password = "123412345";
$dbname = "test_db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM `HOURLY_DATA` WHERE 1 ORDER BY `HOURLY_DATA`.`TIME` ASC";
// Run $sql content as sql script in db.
$result=$conn->query($sql);
This code is just fine and has absolutely no errors or problems related to my goal here.
Also the specific data table I am looking after in this Query is the table named TIME which is of type "Datetime" format in SQL which looks like this:
DATETIME FORMAT:
YYYY-MM-DDTHH:MM:SS or to make it more clear an example would be 1970-09-24T05:00:00
Now moving onto what I am trying to achieve, my code and then the problem.
The Goal:
I have a list of data in the datetime format explained above, where theres HOURS missing, the increment of the HOURS is always +1 meaning that an example of missing data inside this data table would be:
2021-11-01T00:00:00
2021-11-01T01:00:00
2021-11-01T02:00:00
2021-11-01T05:00:00
2021-11-01T06:00:00
2021-11-01T07:00:00
2021-11-01T08:00:00
2021-11-01T13:00:00
2021-11-01T14:00:00
2021-11-01T15:00:00
2021-11-01T16:00:00
2021-11-01T17:00:00
2021-11-01T18:00:00
2021-11-01T19:00:00
2021-11-01T20:00:00
2021-11-01T21:00:00
So by taking a look at this DATETIME list above, we can understand that there is data missing and more specifically hours missing like 22:00:00 or 23:00:00 etc...
Now I want to write a code that will find this missing HOUR steps.
So far I have tried this code:
// Run $sql content as sql script in db.
$result=$conn->query($sql);
$flag = 0;
$i = 0;
$x = 0;
$cont = array();
$temp = array();
foreach ($result as $value) {
$singular_value = $value["TIME"];
$singular_value = str_replace(" ", "", $singular_value);
$day_value = $singular_value[8].$singular_value[9];
$day_value = (int) $day_value;
$singular_value = $singular_value[11].$singular_value[12];
$singular_value = (int) $singular_value;
// First time running.
if ( $flag == 0 ){
$day_chair = $day_value;
$flag = 1;
}
if ( $day_chair == $day_value ){
$temp[]= $value["TIME"];
$cont[$i]= $temp;
$day_chair = $day_value;
} else {
if ( $day_value == 30 || $day_value == 31 ){
$day_chair = 1;
continue;
} else {
$day_chair += 1;
$temp = array();
}
$i++;
}
}
print("<pre>".print_r($cont,true)."</pre>");
*PROBLEM:
To begin with this code returns the hour 00 which is considered to be the 12 o'clock midnight only for the first iteration or day.
Also the code above is supposed to return and array that will look like this:
Array
(
[0] => Array
(
[0] => 2021-11-01T00:00:00
[1] => 2021-11-01T01:00:00
[2] => 2021-11-01T02:00:00
[3] => 2021-11-01T03:00:00
[4] => 2021-11-01T04:00:00
[5] => 2021-11-01T05:00:00
[6] => 2021-11-01T06:00:00
[7] => 2021-11-01T07:00:00
[8] => 2021-11-01T08:00:00
[9] => 2021-11-01T09:00:00
[10] => 2021-11-01T10:00:00
[11] => 2021-11-01T11:00:00
[12] => 2021-11-01T12:00:00
[13] => 2021-11-01T13:00:00
[14] => 2021-11-01T14:00:00
[15] => 2021-11-01T15:00:00
[16] => 2021-11-01T16:00:00
[17] => 2021-11-01T17:00:00
[18] => 2021-11-01T18:00:00
[19] => 2021-11-01T19:00:00
[20] => 2021-11-01T20:00:00
[21] => 2021-11-01T21:00:00
[22] => 2021-11-01T22:00:00
[23] => 2021-11-01T23:00:00
)
[1] => Array
(
[0] => 2021-11-02T00:00:00
[1] => 2021-11-02T01:00:00
[2] => 2021-11-02T02:00:00
[3] => 2021-11-02T03:00:00
[4] => 2021-11-02T04:00:00
[5] => 2021-11-02T05:00:00
[6] => 2021-11-02T06:00:00
[7] => 2021-11-02T07:00:00
[8] => 2021-11-02T08:00:00
[9] => 2021-11-02T09:00:00
[10] => 2021-11-02T10:00:00
[11] => 2021-11-02T11:00:00
[12] => 2021-11-02T12:00:00
[13] => 2021-11-02T13:00:00
[14] => 2021-11-02T14:00:00
[15] => 2021-11-02T15:00:00
[16] => 2021-11-02T16:00:00
[17] => 2021-11-02T17:00:00
[18] => 2021-11-02T18:00:00
[19] => 2021-11-02T19:00:00
[20] => 2021-11-02T20:00:00
[21] => 2021-11-02T21:00:00
[22] => 2021-11-02T22:00:00
[23] => 2021-11-02T23:00:00
)
[2] => Array
(
[0] => 2021-11-03T00:00:00
[1] => 2021-11-03T01:00:00
[2] => 2021-11-03T02:00:00
[3] => 2021-11-03T03:00:00
[4] => 2021-11-03T04:00:00
[5] => 2021-11-03T05:00:00
[6] => 2021-11-03T06:00:00
[7] => 2021-11-03T07:00:00
[8] => 2021-11-03T08:00:00
[9] => 2021-11-03T09:00:00
[10] => 2021-11-03T10:00:00
[11] => 2021-11-03T11:00:00
[12] => 2021-11-03T12:00:00
[13] => 2021-11-03T13:00:00
[14] => 2021-11-03T14:00:00
[15] => 2021-11-03T15:00:00
[16] => 2021-11-03T16:00:00
[17] => 2021-11-03T17:00:00
[18] => 2021-11-03T18:00:00
[19] => 2021-11-03T19:00:00
[20] => 2021-11-03T20:00:00
[21] => 2021-11-03T21:00:00
[22] => 2021-11-03T22:00:00
[23] => 2021-11-03T23:00:00
)
)
And will leave a GAP or simply do write nothing in the array if the date is missing from the database. But this code return a lot of problematic arrays and just to give an example there are some here:
First day was parsed fine but the second one and all the days after the first day are missing the 12 o'clock aka 00:00:00
E.X:
[0] => Array
(
[0] => 2021-11-01T00:00:00
[1] => 2021-11-01T01:00:00
[2] => 2021-11-01T02:00:00
[3] => 2021-11-01T03:00:00
[4] => 2021-11-01T04:00:00
[5] => 2021-11-01T05:00:00
[6] => 2021-11-01T06:00:00
[7] => 2021-11-01T07:00:00
[8] => 2021-11-01T08:00:00
[9] => 2021-11-01T09:00:00
[10] => 2021-11-01T10:00:00
[11] => 2021-11-01T11:00:00
[12] => 2021-11-01T12:00:00
[13] => 2021-11-01T13:00:00
[14] => 2021-11-01T14:00:00
[15] => 2021-11-01T15:00:00
[16] => 2021-11-01T16:00:00
[17] => 2021-11-01T17:00:00
[18] => 2021-11-01T18:00:00
[19] => 2021-11-01T19:00:00
[20] => 2021-11-01T20:00:00
[21] => 2021-11-01T21:00:00
[22] => 2021-11-01T22:00:00
[23] => 2021-11-01T23:00:00
)
[1] => Array
(
[0] => 2021-11-02T01:00:00
[1] => 2021-11-02T02:00:00
[2] => 2021-11-02T03:00:00
[3] => 2021-11-02T04:00:00
[4] => 2021-11-02T05:00:00
[5] => 2021-11-02T06:00:00
[6] => 2021-11-02T07:00:00
[7] => 2021-11-02T08:00:00
[8] => 2021-11-02T09:00:00
[9] => 2021-11-02T10:00:00
[10] => 2021-11-02T11:00:00
[11] => 2021-11-02T12:00:00
[12] => 2021-11-02T13:00:00
[13] => 2021-11-02T14:00:00
[14] => 2021-11-02T15:00:00
[15] => 2021-11-02T16:00:00
[16] => 2021-11-02T17:00:00
[17] => 2021-11-02T18:00:00
[18] => 2021-11-02T19:00:00
[19] => 2021-11-02T20:00:00
[20] => 2021-11-02T21:00:00
[21] => 2021-11-02T22:00:00
[22] => 2021-11-02T23:00:00
)
Also, there are broken days for example when the day reaches day 30 or 31 of the month this happens:
[28] => Array
(
[0] => 2021-11-29T01:00:00
[1] => 2021-11-29T02:00:00
[2] => 2021-11-29T03:00:00
[3] => 2021-11-29T04:00:00
[4] => 2021-11-29T05:00:00
[5] => 2021-11-29T06:00:00
[6] => 2021-11-29T07:00:00
[7] => 2021-11-29T08:00:00
[8] => 2021-11-29T09:00:00
[9] => 2021-11-29T10:00:00
[10] => 2021-11-29T11:00:00
[11] => 2021-11-29T12:00:00
[12] => 2021-11-29T13:00:00
[13] => 2021-11-29T14:00:00
[14] => 2021-11-29T15:00:00
[15] => 2021-11-29T16:00:00
[16] => 2021-11-29T17:00:00
[17] => 2021-11-29T18:00:00
[18] => 2021-11-29T19:00:00
[19] => 2021-11-29T20:00:00
[20] => 2021-11-29T21:00:00
[21] => 2021-11-29T22:00:00
[22] => 2021-11-29T23:00:00
[23] => 2021-12-01T00:00:00
[24] => 2021-12-01T01:00:00
[25] => 2021-12-01T02:00:00
[26] => 2021-12-01T03:00:00
[27] => 2021-12-01T04:00:00
[28] => 2021-12-01T05:00:00
[29] => 2021-12-01T06:00:00
[30] => 2021-12-01T07:00:00
[31] => 2021-12-01T08:00:00
[32] => 2021-12-01T09:00:00
[33] => 2021-12-01T10:00:00
[34] => 2021-12-01T11:00:00
[35] => 2021-12-01T12:00:00
[36] => 2021-12-01T13:00:00
[37] => 2021-12-01T14:00:00
[38] => 2021-12-01T15:00:00
[39] => 2021-12-01T16:00:00
[40] => 2021-12-01T17:00:00
[41] => 2021-12-01T18:00:00
[42] => 2021-12-01T19:00:00
[43] => 2021-12-01T20:00:00
[44] => 2021-12-01T21:00:00
[45] => 2021-12-01T22:00:00
[46] => 2021-12-01T23:00:00
)
[29] => Array
(
[0] => 2021-12-02T01:00:00
[1] => 2021-12-02T02:00:00
[2] => 2021-12-02T03:00:00
[3] => 2021-12-02T04:00:00
[4] => 2021-12-02T05:00:00
[5] => 2021-12-02T06:00:00
[6] => 2021-12-02T07:00:00
[7] => 2021-12-02T08:00:00
[8] => 2021-12-02T09:00:00
[9] => 2021-12-02T10:00:00
[10] => 2021-12-02T11:00:00
[11] => 2021-12-02T12:00:00
[12] => 2021-12-02T13:00:00
[13] => 2021-12-02T14:00:00
[14] => 2021-12-02T15:00:00
[15] => 2021-12-02T16:00:00
[16] => 2021-12-02T17:00:00
[17] => 2021-12-02T18:00:00
[18] => 2021-12-02T19:00:00
[19] => 2021-12-02T20:00:00
[20] => 2021-12-02T21:00:00
[21] => 2021-12-02T22:00:00
[22] => 2021-12-02T23:00:00
)
QUESTION:
What can I do to solve this programmatic/algorithmic problem or what am I doing wrong in my code?
How can I ignore all images that begin with the string 'blogCover'?
At first I did not exclude a picture for the test
all pictures in img directory:
$imgDir = 'img';
$imgs = glob($imgDir.'/*{.jpg}', GLOB_BRACE); //all images!
echo'<pre>'; print_r($imgs); echo'</pre>';
result:
Array
(
[0] => img/blogCover-large.jpg
[1] => img/blogCover-large_2x.jpg
[2] => img/blogCover-medium.jpg
[3] => img/blogCover-medium_2x.jpg
[4] => img/blogCover-small.jpg
[5] => img/blogCover-small_2x.jpg
[6] => img/boddy-large.jpg
[7] => img/boddy-large_2x.jpg
[8] => img/boddy-medium.jpg
[9] => img/boddy-medium_2x.jpg
[10] => img/boddy-small.jpg
[11] => img/boddy-small_2x.jpg
[12] => img/face-large.jpg
[13] => img/face-large_2x.jpg
[14] => img/face-medium.jpg
[15] => img/face-medium_2x.jpg
[16] => img/face-small.jpg
[17] => img/face-small_2x.jpg
[18] => img/hand-large.jpg
[19] => img/hand-large_2x.jpg
[20] => img/hand-medium.jpg
[21] => img/hand-medium_2x.jpg
[22] => img/hand-small.jpg
[23] => img/hand-small_2x.jpg
[24] => img/head-large.jpg
[25] => img/head-large_2x.jpg
[26] => img/head-medium.jpg
[27] => img/head-medium_2x.jpg
[28] => img/head-small.jpg
[29] => img/head-small_2x.jpg
)
my goal: Ignore all images that begin with the string 'blogCover'
$imgDir = 'img';
$imgs = glob($imgDir.'/*{[!blogCover*].jpg}', GLOB_BRACE);
echo'<pre>'; print_r($imgs); echo'</pre>';
unexpected result:
Array
(
[0] => img/blogCover-large_2x.jpg
[1] => img/blogCover-medium.jpg
[2] => img/blogCover-medium_2x.jpg
[3] => img/blogCover-small_2x.jpg
[4] => img/boddy-large_2x.jpg
[5] => img/boddy-medium.jpg
[6] => img/boddy-medium_2x.jpg
[7] => img/boddy-small_2x.jpg
[8] => img/face-large_2x.jpg
[9] => img/face-medium.jpg
[10] => img/face-medium_2x.jpg
[11] => img/face-small_2x.jpg
[12] => img/hand-large_2x.jpg
[13] => img/hand-medium.jpg
[14] => img/hand-medium_2x.jpg
[15] => img/hand-small_2x.jpg
[16] => img/head-large_2x.jpg
[17] => img/head-medium.jpg
[18] => img/head-medium_2x.jpg
[19] => img/head-small_2x.jpg
)
all '* -large.jpg', '* -small.jpg' images are missing
expected result:
Array
(
[0] => img/boddy-large.jpg
[1] => img/boddy-large_2x.jpg
[2] => img/boddy-medium.jpg
[3] => img/boddy-medium_2x.jpg
[4] => img/boddy-small.jpg
[5] => img/boddy-small_2x.jpg
[6] => img/face-large.jpg
[7] => img/face-large_2x.jpg
[8] => img/face-medium.jpg
[9] => img/face-medium_2x.jpg
[10] => img/face-small.jpg
[11] => img/face-small_2x.jpg
[12] => img/hand-large.jpg
[13] => img/hand-large_2x.jpg
[14] => img/hand-medium.jpg
[15] => img/hand-medium_2x.jpg
[16] => img/hand-small.jpg
[17] => img/hand-small_2x.jpg
[18] => img/head-large.jpg
[19] => img/head-large_2x.jpg
[20] => img/head-medium.jpg
[21] => img/head-medium_2x.jpg
[22] => img/head-small.jpg
[23] => img/head-small_2x.jpg
)
I expect to ignore these pictures:
blogCover-large.jpg
blogCover-large_2x.jpg
blogCover-medium.jpg
blogCover-medium_2x.jpg
blogCover-small.jpg
blogCover-small_2x.jpg
The right syntax is:
$imgs = glob($imgDir.'/[^blogCover]*.jpg', GLOB_BRACE);
I am developing a financial web application I am really stuck with this issue.
I need to search with conditions and return the array if the condition is true..
I know the multi-dimensional array search, but I did't get any idea for this. For example :
if array[0][7] > array[0][8] && array[0][12] < array[0][15]
Please suggest me the solution
Array (
[0] => Array (
[0] => 54452
[1] => 'KSB'
[2] => 'INE999A01015'
[3] => 'EQ'
[4] => 'Ksb Limited'
[5] => -0.70
[6] => -0.10
[7] => 662.90
[8] => 663.60
[9] => 669.35
[10] => 678.25
[11] => 651.55
[12] => 7874
[13] => 676.91
[14] => 690.93
[15] => 703.61
[16] => 664.23
[17] => 650.21
[18] => 637.53
[19] => 623.51
[20] => 2530
[21] => 32.13
[22] => 825.00
[23] => 539.00
[24] => 665.89
[25] => 631.37
[26] => 616.65
[27] => 610.14
[28] => 615.89
[29] => 656.25
[30] => 680.74
[31] => 60.71
[32] => 60.71
[33] => 13.62
[34] => 29.39
[35] => -38.97
[36] => 129.47
[37] => 2019-09-26
[38] => 27632
),
[1] => Array (
[0] => 53772
[1] => 'ASPINWALL'
[2] => 'INE991I01015'
[3] => 'EQ'
[4] => 'Aspinwall And Company Limited'
[5] => -10.50
[6] => -7.74
[7] => 127.45
[8] => 137.95
[9] => 135.60
[10] => 144.50
[11] => 112.60
[12] => 9583
[13] => 143.76
[14] => 160.08
[15] => 175.66
[16] => 128.18
[17] => 111.86
[18] => 96.28
[19] => 79.96
[20] => 5108
[21] => 53.30
[22] => 214.80
[23] => 112.60
[24] => 135.17
[25] => 137.13
[26] => 137.46
[27] => 136.86
[28] => 137.59
[29] => 143.00
[30] => 153.89
[31] => 39.41
[32] => 39.41
[33] => -0.90
[34] => 37.96
[35] => -58.05
[36] => -361.91
[37] => 2019-09-26
[38] => 26324
)
)
Thanks in advance
Give a try to following code and make necessary changes according to your need
function search_sg_dma($array, $pre_close, $dma_value, $close_price){
...
$result = array();
for( $i = 0; $i < count( $array ); $i++ ) {
if ( $array[$i][$pre_close] < $array[$i][$dma_value] && $array[$i][$close_price] > $array[$i][$dma_value] ) {
$result[] = array[$i];
}
}
return $result;
}
I want to cut array in php. My array is listed below :
Array
(
[0] => 6/1/2014
[1] => 6/2/2014
[2] => 6/3/2014
[3] => 6/4/2014
[4] => 6/5/2014
[5] => 6/6/2014
[6] => 6/7/2014
[7] => 6/8/2014
[8] => 6/9/2014
[9] => 6/10/2014
[10] => 6/11/2014
[11] => 6/12/2014
[12] => 6/13/2014
[13] => 6/14/2014
[14] => 6/15/2014
[15] => 6/16/2014
[16] => 6/17/2014
[17] => 6/18/2014
[18] => 6/19/2014
[19] => 6/20/2014
[20] => 6/21/2014
[21] => 6/22/2014
[22] => 6/23/2014
[23] => 6/24/2014
[24] => 6/25/2014
[25] => 6/26/2014
[26] => 6/27/2014
[27] => 6/28/2014
[28] => 6/29/2014
[29] => 6/30/2014
[30] => 7/1/2014
[31] => 7/2/2014
[32] => 7/3/2014
[33] => 7/4/2014
[34] => 7/5/2014
[35] => 7/6/2014
[36] => 7/7/2014
[37] => 7/8/2014
[38] => 7/9/2014
[39] => 7/10/2014
[40] => 7/11/2014
[41] => 7/12/2014
[42] => 7/13/2014
[43] => 7/14/2014
[44] => 7/15/2014
[45] => 7/16/2014
[46] => 7/17/2014
[47] => 7/18/2014
[48] => 7/19/2014
[49] => 7/20/2014
[50] => 7/21/2014
[51] => 7/22/2014
[52] => 7/23/2014
[53] => 7/24/2014
[54] => 7/25/2014
[55] => 7/26/2014
[56] => 7/27/2014
[57] => 7/28/2014
[58] => 7/29/2014
[59] => 7/30/2014
[60] => 7/31/2014
[61] => 8/1/2014
)
In this array 0 to 29 elements if for 6th Month, 30th to 60th elements are for 7th Month etc..
Now i want this array in the below fashion
Array
(
[0] => 6/1/2014
[1] => 6/2/2014
[2] => 6/3/2014
[3] => 6/4/2014
[4] => 6/5/2014
[5] => 6/6/2014
[6] => 6/7/2014
[7] => 6/8/2014
[8] => 6/9/2014
[9] => 6/10/2014
[10] => 6/11/2014
[11] => 6/12/2014
[12] => 6/13/2014
[13] => 6/14/2014
[14] => 6/15/2014
[15] => 6/16/2014
[16] => 6/17/2014
[17] => 6/18/2014
[18] => 6/19/2014
[19] => 6/20/2014
[20] => 6/21/2014
[21] => 6/22/2014
[22] => 6/23/2014
[23] => 6/24/2014
[24] => 6/25/2014
[25] => 6/26/2014
[26] => 6/27/2014
[27] => 6/28/2014
[28] => 6/29/2014
[29] => 6/30/2014
)
Array
(
[0] => 7/1/2014
[1] => 7/2/2014
[2] => 7/3/2014
[3] => 7/4/2014
[4] => 7/5/2014
[5] => 7/6/2014
[6] => 7/7/2014
[7] => 7/8/2014
[8] => 7/9/2014
[9] => 7/10/2014
[10] => 7/11/2014
[11] => 7/12/2014
[12] => 7/13/2014
[13] => 7/14/2014
[14] => 7/15/2014
[15] => 7/16/2014
[16] => 7/17/2014
[17] => 7/18/2014
[18] => 7/19/2014
[19] => 7/20/2014
[20] => 7/21/2014
[21] => 7/22/2014
[22] => 7/23/2014
[23] => 7/24/2014
[24] => 7/25/2014
[25] => 7/26/2014
[26] => 7/27/2014
[27] => 7/28/2014
[28] => 7/29/2014
[29] => 7/30/2014
[30] => 7/31/2014
)
Array
(
[0] => 8/1/2014
)
This calculation should be in a way that if i chose other months then it also do the same process of cutting array for different months.
you can also separate array by month & and put them in main array
$arrres =array();
foreach($arr as $value)
{
$arrres[str_replace('/','',substr($value,0,2))][] = $value ;
}
print_r($arrres);
you can use this:, it will also generate arrays with same num of days in months (28,30,31)
//generate dates for test
$dates = [];
for($i = 0 ; $i < 90 ; $i++){
$dates[] = Date("d/m/Y",time()-($i*24*3600));
}
//make results, also validates that it's same month and year
$result = [];
foreach($dates as $date){
$dStr = Date("m-y",strtotime(str_replace('/', '-', $date)));
if(!isset($result[$dStr])) $result[$dStr] = [];
$result[$dStr][] = $date;
}
var_dump($result);
I'd explode the value of every index in your array and set it as an index to the new array.
$days = [];
foreach($your_array as $day) {
$days[ explode("/", $day)[0] ][] = $day;
}
var_dump( $days );
I have an array in which I need to count duplicate values.
Here's the original array...
array(
[0] => 23.07.2014
[1] => 23.07.2014
[2] => 23.07.2014
[3] => 22.07.2014
[4] => 22.07.2014
[5] => 21.07.2014
[6] => 21.07.2014
[7] => 21.07.2014
[8] => 20.07.2014
[9] => 20.07.2014
[10] => 19.07.2014
[11] => 19.07.2014
[12] => 18.07.2014
[13] => 18.07.2014
[14] => 18.07.2014
[15] => 17.07.2014
[16] => 17.07.2014
[17] => 17.07.2014
[18] => 16.07.2014
[19] => 15.07.2014
[20] => 14.07.2014
[21] => 13.07.2014
[22] => 13.07.2014
[23] => 12.07.2014
[24] => 12.07.2014
[25] => 11.07.2014
[26] => 11.07.2014
[27] => 10.07.2014
[28] => 09.07.2014
[29] => 09.07.2014
[30] => 08.07.2014
)
and I want to get a count of every value in the array, for example:
23.07.2014 Count=3
24.07.2014 Count=2
25 07.2014 Count=1
29.07.2014 Count=1
28.07.2014 Count=1
Use this :
print_r(array_count_values($array));
Try this...
$vals = array_count_values($array);
$key=array_keys($vals);
$value=array_values($vals);
$count=count($vals);
for($i=0;$i<$count;$i++)
{
echo $key[$i]."=>".$value[$i]."</br>";
}
Something likethis should work: (not tested)
unset($tempArr);
foreach ($arr as $elem => $content) {
if(isset($tempArr[$content]) $tempArr[$content]++;
else $tempArr[$content] = 0;
}
echo '<pre>'.print($tempArr).'</pre>';
You can try this by diffrent count of existing array count and unique array count...
`$duplicates = count($currentArray)-count(array_unique($currentArray));
echo $duplicates;